欢迎使用CSDN-markdown编辑器
来源:互联网 发布:软件意向购买书 编辑:程序博客网 时间:2024/06/14 07:07
最近调试了stm32f429IG的串口,建立工程使用了HAL库,不同于使用f1系列时的标准库。HAL库使用了一些新的特性,在调试的时候带来了一些方便也带来了很多困惑。以下做一个HAL库应用到串口上的总结:
HAL库函数
Hal_uart_init(huart) 函数通过usart handle structure参数对串口进行初始化配置,该结构体huart 需要配置串口号、数据结束位、数据位数、有无硬件流控、有无奇偶校验等等配置参数。
在stm32f4xx_usart.c文件中,有该函数的定义,Hal_uart_init(huart)还调用了一个弱函数Hal_uart_mspinit(void)。一般需要对这个函数进行重定义,用来使能串口时钟、使能gpio口时钟、配置gpio口工作模式,并且配置串口中断分组。
类似地,usart_IRQHandler(huart)中断函数也调用了HAl库函数Hal_usart_IRQhandler(huart)函数,Hal_usart_IRQhandler(huart)对串口标志位进行判断,从而确定串口数据传输状态,当发生接收中断或者发送中断时,调用Hal_uart_RXIRQcallback(haurt),Hal_uart_TXIRQcallback(haurt)。同样地,这两个函数也是弱函数,用户可以进行重定义。一般中断操作就在重定义的回调函数里面写就可以了。
HAL库的缺点就在于,它进行了很多层次的调用,如果不仔细研究Hal库函数。用户看不出.c文件中定义的弱函数怎样与其它函数相关联。
它的优点也比较明显,用户的处理一般就是重定义相关弱函数实现相应处理。
另一方面,刚刚接触串口,常常被一些莫名其妙的错误困扰到。在这里也做一个总结,希望能够给刚刚接触的同伴们勘误带来帮助。
使用串口助手调试时注意选择你串口初始化时的波特率,这个一定注意,不然就会出现乱码。
如上图红圈所示。
你的程序配置的波特率为9600,那么你的串口助手一定也要勾选9600波特率。这样才可能进行正常通信。(我刚开始调试程序的时候忘记了这一点,总显示乱码。然后一味觉得自己代码错误,浪费了不少时间;这里指出来,希望能给像我一样的新手一个勘误的提示。)
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- VB查找sqlserver中是否存在某张表,不存在则创建
- UVA 10305 拓扑排序 删边法
- 这下好了,连热情都没了
- PAT B1012
- 【HDU 1251 统计难题】+ 字典树
- 欢迎使用CSDN-markdown编辑器
- java 基础 - 静态 static
- HTML5新特性总结
- 神经网络-LFR model
- 洛谷1372
- xcode8打包出错
- 自动化测试环境Python3+selenium2
- handler Activity.runOnUIThread(Runnable) View.Post(Runnable) View.PostDelayed(Runnabe,lon
- goal-keeper,足球守门员机器人,系统设计图,梅西守门员机器人