stm32串口例程_stm32教程

stm32串口例程_stm32教程实用STM32的串口控制平台的实现(建议收藏)1. 前言玩过Linux的朋友, 是不是对Linux无所不能的串口Shell命令控制台羡慕不已, 要是自己做的STM32F系列低档次的MCU也有这种控制交互能力, 会给调试/维护和配置省下多少麻烦事呀, 比如启动/关闭调试或自

实用STM32的串口控制平台的实现(建议收藏)   1. 前言   玩过Linux的朋友, 是不是对Linux无所不能的串口Shell命令控制台羡慕不已, 要是自己做的STM32F系列低档次的MCU也有这种控制交互能力, 会给调试/维护和配置省下多少麻烦事呀, 比如启动/关闭调试或自检模式, 打印调试信息, 配置系统参数, 传输文件等等, 也有相当多的朋友凭借自己出色的编程能力可以实现这些功能, 这里提出我的这个解决方案, 以作交流.   本平台(xc_shell)具备以下性能特点:大量主要代码, 和具体硬件无关, 移植性强,代码文件少.只有在处理用户的输入命令时, 才占用CPU资源, 且代码可裁剪到1KB SRAM和4KB Flash;用户可以非常灵活的添加按模板编写的命令脚本文件, 自定义扩张能力强.支持操作系统和非操作系统两种场景应用.支持Ymodem文件传输协议支持将Flash的扇区开辟为参数区, 可实现本地/远程升级。实用Led灯信号管理, 可将65535虚拟信号灯选择输出到1个实体LED灯上, 调试时序和状态非常有用拥有基础的LED管理, 调试模式设置, 命令帮助指令, 复位指令等基础功能   功能越多设计会越复杂, 为了解释清楚代码, 先向大家解释一下以上功能的基础实现原理, 并提供一个最小的的源码工程。   2. xc_shell平台介绍   2.1 如何实现硬件无关   类比Linux会发现, 设备的硬件接口往往会被虚拟成一个文件(驱动), 而Linux内核完全与硬件系统无任何字节关联, 不同平台驱动不同而已, 故而本xc_shell的串口驱动也采用了相似的思路:   1) 串口驱动用一个结构体描述, 这样只需在xc_shell.c中用指针指向这个TTYx_HANDLE结构体对象就可以将串口(tty)硬件与内核联系在一起, 聪明的朋友可能会想到, 假如我将带网络的开发板按此结构体,虚拟一个TTY对象, 岂不是就可以实现一个网络远程控制台了! 这点确实是可以的!   2) 当然诸如多TTY串口实现接口互换等, 都是一个指针和step2中的注入回调处理交换的问题。   3)用户在使用api_TxdFrame或api_TxdByte时”bsp_ttyX.c“,会驱动具体MCU的串口将数据发送出去, 收到一帧数据后,若用户设置了inj_RcvFrame回调处理方法,则会在中断中执行用户的回调处理。
stm32串口例程_stm32教程
stm32串口例程_stm32教程   2、可注入的命令脚本(CLI)实现   命令CLI也是一个结构体对象:
stm32串口例程_stm32教程
stm32串口例程_stm32教程   各位朋友可能会使用到非常多的自定义CLI命令, 格式诸如这个网卡的命令:
stm32串口例程_stm32教程
stm32串口例程_stm32教程
stm32串口例程_stm32教程
stm32串口例程_stm32教程   如配置IP地址输入“wiz wr ip 192.168.1.250\r\n”则可以了   3. 环境准备   3.1 硬件开发环境   STM32F103系列开发板一块, 带USART1接口。USB转串口线一根。   3.2 软件开发环境   MDK4.72或以上SecureCRT串口超级终端   3.3 软件配置   在xc_shell使用“/r/n”作为命令的结束符, 而SecureCRT按下Enter不是输入“/r/n”故而需要按下图设置:此外在《终端》/仿真/高级中选取【本地回显】
stm32串口例程_stm32教程
stm32串口例程_stm32教程   4. 代码介绍   4.1 目录结构   
stm32串口例程_stm32教程
stm32串口例程_stm32教程   4.2 工程设置要点   1) 设置使用微库:
stm32串口例程_stm32教程
stm32串口例程_stm32教程   2)配置包含和路径,注意使用了“–c99”标准,如图
stm32串口例程_stm32教程
stm32串口例程_stm32教程   3) 编译工程,无错误警告后烧写程序到开发板运行。   4.3 最终效果   按图输入一下指令,SHELL平台会sigusoft相关信息。其中输入“led set 0=1”会将信号1分配到物理LED0上;输入“led set 0=2”会将信号2分配到物理LED0上。这样用户编写程序代码时相当于拥有了超级多的LED信号可用,调试时序非常有用。
stm32串口例程_stm32教程
stm32串口例程_stm32教程   5. 添加自己的指令脚本   5.1 源代码示例   假设我要编写一个自己的指令脚本, 来读取MCU的关键信息,关键字为mcu, 文件命名为shell_mcu.c;当输入“mcu rd 0”时显示MCU的FLASH大小,输入“mcu rd 1”时读取MCU的唯一ID信息。shell_mcu.c源代码:
stm32串口例程_stm32教程
stm32串口例程_stm32教程
stm32串口例程_stm32教程
stm32串口例程_stm32教程
stm32串口例程_stm32教程
stm32串口例程_stm32教程
stm32串口例程_stm32教程
stm32串口例程_stm32教程
stm32串口例程_stm32教程
stm32串口例程_stm32教程
stm32串口例程_stm32教程
stm32串口例程_stm32教程
stm32串口例程_stm32教程
stm32串口例程_stm32教程   5.2 实现步骤   1) 将该文件添加到工程下。   2) 在main.c中用extern 引用McuList,源代码为:
stm32串口例程_stm32教程
stm32串口例程_stm32教程   3)在main.c初始化时添加:
stm32串口例程_stm32教程
stm32串口例程_stm32教程   4)编译工程文件。   5)下载到开发板运行即可在终端下看到新支持的CLI指令:
stm32串口例程_stm32教程
stm32串口例程_stm32教程   【学习交流群:】   【分享一些网盘免费资料包,大家需要的自行领取】:嵌入式物联网 stm32 c/c++、QT Linux资料包【华清远见发放资料包】
stm32串口例程_stm32教程
stm32串口例程_stm32教程

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/62825.html

(0)
上一篇 2024年 8月 28日 下午1:47
下一篇 2024年 8月 28日 下午1:53

相关推荐

关注微信