ARM 为什么老进不去串口中断呢?用的是正点原子的程序,用的是STM32-MINI开发板,不一定的地方是PORT接口
发布网友
发布时间:2022-05-07 04:07
我来回答
共3个回答
热心网友
时间:2023-10-15 00:09
1. printk是linux内核的打印函数,纯固件的程序中当然不会有这个函数的定义。
2. printf只用到了串口输出,没有输入,如果只是单纯死在这里应该与中断无关。
目前需要继续定位问题:
1. 保证在程序执行到挂死的位置时串口没有输入。
2. 在没有仿真器的情况下,用IO口电压或LED点亮和关闭的方法定位程序死在哪一行代码上。该代码不应该是一个函数调用,应该是函数内部的寄存器判断或某个循环语句。
3. 如果确认是在串口输入到来时才会产生的现象,并且程序也没有执行到中断处理,需要检查中断入口地址是否正确。可以考虑检查所有中断,确认是否因为其它中断引起代码跳转错误。追问printf的问题正如你所说的和中断无关。。我换了低版本的MDK编译器就正常输出了,但是现在新问题就是:我发送数据给串口,它不会回我信息。。。这又是什么原因,好懊恼啊。。
追答现在需要确认的问题是,单片机收到数据了没?你可以在代码里比较一下接收到的数据,正确的话就拉一下IO。
热心网友
时间:2023-10-15 00:09
printf 如果是驱动程序 不是用这个函数 用printk追问试过不行了,直接就报错,说printk没有定义。。
热心网友
时间:2023-10-15 00:10
在中断中 输入
t=USART1->SR;
t++;
就ok了 目的是手动清除SR标志