计算机系统应用教程网站

网站首页 > 技术文章 正文

跟着小白学STM32,啰嗦的串口程序是这样的

btikc 2024-10-12 11:44:33 技术文章 8 ℃ 0 评论

串口是一种通信方式,这个我不陌生。STM32的串口配置也算是比较简单的,但我为了代码的通用,自己采用了一种比较啰嗦的方式。原因我总结一下:

1. STM32有个IO口的重映射功能,正常情况下串口的IO口是PA9和PA10,特殊情况下可以映射为 PB6和PB7,这就出现一个问题,你第一个项目串口初始化的是PA9和PA10,另一个项目可能 进行了重映射,需要配置PB6和PB7,你这个串口初始化函数就要改,当然改一下也不麻烦,但 对于强迫症的我仍然不想去改函数,所以我定义了两个几个额外的参数,通过预编译的方式让 其自动判断是否进行了重映射。如下

设置为0代表没有重映射,设置为1代表有重映射。紧接着看图:

根据RU_USART1_Remap这个常量的值进行预编译,然后你就会看到初始化函数里面根据常量 RU_USART1_Remap的值不同而开启响应的时钟:

GPIO初始化也根据常量RU_USART1_Remap值的不同自动的替换了IO口:

2. 串口初始化的时候有时需要用到串口中断,有时不需要,这里如果想要统一,也要用到上面的 同样的预编译的方法,只需定义一个常量EN_USART1_RX

接下来就简单了,跟上面如出一辙

一个#if语句解决问题。

当然了,以上这些可能压根儿就不合理,只是我自己的一点点尝试,权当作复习一下C语言了 (不过我翻看了一下库函数源码,里面用到预编译的地方特别多,读源码对C语言的理解有帮 助)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表