如题所述
找到问题了 void USART3_IRQHandler(void)
{
HAL_UART_IRQHandler(&huart3);
}
如果在cube中设置了nvic的话这个函数会在-it.c里面自动写好
如果cube中没有设置nvic的话 这个函数要自己写 才能开启中断
{
HAL_UART_IRQHandler(&huart3);
}
如果在cube中设置了nvic的话这个函数会在-it.c里面自动写好
如果cube中没有设置nvic的话 这个函数要自己写 才能开启中断
温馨提示:答案为网友推荐,仅供参考
第1个回答 2017-11-01
小明是一个搬运工,负责将货物从一个地方搬到另一个地方。有一天老板交给他任务,让他从轮船港口将十个箱子的货物搬运到仓库里固定的位置,然后老板就去处理别的事情了。小明来到港口找到箱子存放的位置然后开始搬运。小明力气有限因此每次只能搬运一个箱子到仓库里。小明不断的搬运货物直到10个箱子全部运到仓库里,然后小明报告了老板已经完成任务。老板暂停了手头的工作来到仓库,取走了箱子里的东西。
通常情况下,DMA会检测UART的接收缓冲区,当数据到来时会自动将数据读取出来,存放到到指定的地址(小明不断的从港口搬运数据到仓库)当接收到一定数量的数据后会发出一个信号用于通知CPU,表明数据接收完毕(小明搬完10个箱子后报告老板),这个信号可以是一个状态位或者一个中断标志位,这样CPU知道数据接收完毕后进行下一步处理(老板来到仓库取走箱子里的东西)。
通常情况下,DMA会检测UART的接收缓冲区,当数据到来时会自动将数据读取出来,存放到到指定的地址(小明不断的从港口搬运数据到仓库)当接收到一定数量的数据后会发出一个信号用于通知CPU,表明数据接收完毕(小明搬完10个箱子后报告老板),这个信号可以是一个状态位或者一个中断标志位,这样CPU知道数据接收完毕后进行下一步处理(老板来到仓库取走箱子里的东西)。