以前只用过F103,用的也是标准库,学的时候就被告诉所有中断函数都写在stm32f10x_it.c里。之前论坛里看见有人发了个帖子关于串口环形队列的,就下了程序学习学习,结果这一看程序彻底把我搞蒙了,因为它的串口中断函数根本没写在stm32f10x_it.c里,我一时还没找到具体在哪,以为没有中断函数呢,但一想不可能啊,它介绍的时候就说了用的串口发送中断,过了一段时间才发现在串口配置的.c文件里了。后来,抢到了L476的板子,这一接触到HAL更蒙了,stm32l4xx_it.c里不是没看见中断函数就是用的callback函数。表示变化太大接受不了啊。最后想说一下既然准备了一个写中断函数的.c文件为啥都要写在其他地方呢,多增加看程序的难度啊(至少我看程序的难度增加了)。 |
+1.
1。太多的中断,如果所有的中断都写在it.c文件中,那it.c文件就太大了。
2。当在it.c文件中写中断的时候,免不了与其他的c文件共享变量。如果这样的话,还需要头文件或者extern来处理,太麻烦。
3。如果全写在it.c中的话,读程序也很头疼。看到it.c中的一个中断,还要去翻翻其他的程序看看这个中断中使用的变量,也不利于阅读。
个人推荐还是将中断写在相应的驱动模块中。
哦,我之前学的时候教我的人告诉我必须写在it.c里面。以为写在其他地方不工作呢
写到相应的模块中是极好的解决办法,特别是有共享变量时!
不过现在的HAL都是使用的回调函数的形式,所以处理好回调函数的位置即可。