网站首页 > 技术文章 正文
串口是一种通信方式,这个我不陌生。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语言的理解有帮 助)
猜你喜欢
- 2024-10-12 STM32单片机-多串口printf()问题与ASCII码解析
- 2024-10-12 stm32F0 串口的几个特殊功能 stm32f1串口引脚
- 2024-10-12 STM32串口发送用哪个中断? stm32f4串口发送数据
- 2024-10-12 STM32F103编程学习——USB虚拟串口篇
- 2024-10-12 STM32F4入坑日记——串口发送数据(非中断)
- 2024-10-12 STM32 HAL库串口中断发送过程 stm32f4串口中断
- 2024-10-12 在货物监控设备研发时,STM32串口第一个字节丢失解怎么解决?
- 2024-10-12 STM32单片机采用环形缓冲区实现串口中断数据接收管理
- 2024-10-12 基于STM32的串口与DMA的完美组合(上)
- 2024-10-12 STM32下载程序新思路--使用串口下载STM32程序
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)