最近由于工作关系又在搞stm32,由原来的iar 4.2升级为iar5.4 ,库版本也同样升级为3.1.2 ,结果发现自己实在太粗心,就一个串口,都是现成的库函数已经搞了一个礼拜了,出现问题为串口中断初始化不能正常运行,我大体在这儿说一下。
本来以为自己已经很熟悉了,上来就把代码复制过来,一开始串口接收中断打开,发送中断关闭,能够完成初始化,再把接收和发送同时打开,在发送中断使能语句执行完后,程序就跑飞,没办法,先用查询方式发送,MS我倒现在都没有用到发送中断。
TX、RX短接,直接发送,接收中断开始,依然进不了中断函数。估计就是发送根本没有完成,是不是串口根本就没工作?可是RCC、GPIO时钟也已经使能了,不可能啊。
于是,放弃中断的想法,改用查询发送和接收,串口终于有反应了,那就是中断方式没有设置对,本以为是工程配置的问题,折腾了两天,才发现原来只是是NVIC定义向量地址的语句忘记加上了。
NVIC_SetVectorTable( NVIC_VectTab_RAM, 0x0); //我用的RAM调试
火,感觉stm的库很容易上手,但是也很容易云里雾里的把人绕进去。其实中断不正常的时候早就应该想到是NVIC,可是copy的代码糊弄了自己。
告一段落,我只想说,很多情况下,出现问题,一定要相信自己,静下心来仔细分析,有可能只是很简单的一个语句的问题,作为自己和大家共勉。
接下来,串口为什么不可以一直进中断,能不能实现的问题,需要再搞清楚
文章评论(0条评论)
登录后参与讨论