|
本帖最后由 wangxiangtan2 于 2023-11-5 11:22 编辑
纸上得来终觉浅,绝知此事要躬行。
学个东西真难啊,老了,不中用了,哎。
一,目标:通过串口中断实现数据收发并控制LED翻转。
二,过程:
1,查看文档和接线图,确定用到的端口,IO口PA3和PA12连接串口USART1的接收和发送,
IO口PA11连接LED灯。查看引脚复用表,IO口PA3和PA12用作串口通讯时要启用复用功能AF1。
2,程序里面对IO口PA3、PA13进行初始化,开启复用功能AF1用来串口通讯:
3,串口中断初始化写到一个单独文件里面,网上抄一段STM32的串口中断程序、字节
字符串的收发程序(官方例程没看懂……),灵动微这个MM32G0001A1的中断初始化
程序跟STM32几乎一毛一样,还做了简化,直接粘贴过来编译通不过,删掉两行就行了。
4,中断处理函数放main.c里面也行,好神奇的感觉。在中断处理函数里面翻转LED灯,
并把收到的数据加个整数发送回去:
(数字1、2、3在字符串格式显示的时候就会是方框框,字符串换行在Hex格式
下显示就是0D 0A)
这样就可以了。就这几段代码,昨天折腾了一天……刚开始想用USART2口,配置
好程序,直接把USART2的引脚怼到USART1上,发现不行,一个恒高,一个恒低,
参考网上的例程又改回USART1,才实现数据发送,然后又折腾数据接收,真是怼
着现成的例程还得消化老半天,哎……
三、Keil遇到的问题
1,Keil无法输入、显示中文字符:
在设置里面把文档编码从ANSI改为GB2132:
2,明明包含路径已经正确设置、编译也正常,就是显示红XX、提示找不到文件:
原因是当前项目路径包含了中文,解决方法
1)把项目文件放到不含中文的目录下,就不会显示红XX了:
2)暴力点,取消动态语法检测功能,也不会再显示红XX:
四、做好说明,保存备用
参考资料:
1)官方例程;
2)stm32串口通讯方法:https://blog.csdn.net/qq_44852376/article/details/127890213
3)他人的串口操作:https://www.xcc.com/planet/post/1015
4)https://www.xcc.com/planet/post/1276
五、视频、源码
上位机发个数据,板子上LED翻转一下,同时回传一个数据:
放个源码,供大家参考
论坛抽风,发个贴真难……
好了,研究I2C通讯去了,买了一个温湿度小板子,
上面的温度、湿度、大气压力、海拔高度是I2C通讯……
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|