GD32芯片串口中断错误问题
·
项目场景:
当使用gd32开发产品。当串口0、1、2、3无法满足,就需要使用拓展串口3和4了。
问题描述
当使用gd32开发的时候,发现串口0、1、2都没问题。但如果使用了串口3,并且打开了中断,当串口3收到数据的时候,神奇的事情发生了:软件自动重启复位,然后跑了一遍后就飞了。调试工具也调不出来
原因分析:
我的猜测如下:
1. uart和usart的初始化方法不一样
2. uart的tx要禁用掉,否则影响rx
3. 外部未接上拉和滤波
4. 编不下去了,反正我试了很多方式都没成功,也忘记猜了多少种了
解决方案:
将rx修改为软件读取标志位,是可以的。不要打开中断
终极方案:
我的芯片是GD21F103VET6,属于HD产品。但之前的工程是CT型号,属于MD产品,所以启动文件startup_gd32f10x_xd.s这里就选错了,md的文件没定义uart3和4的中断,当然跑飞了。换成HD文件就好了。
期间被一篇文章点醒了一下
STM32移植RISC-V常见中断向量表配置错误_编程语言-CSDN问答
总结:
不能太粗心,也不能全移植了,要看一下合不合适。这个bug找了两天才发现。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)