LPC微控制器上的中断寄存器写操作

问题描述 投票:0回答:1

这些天我已经解决了错误的虚假寄存器写问题。问题是,我在主循环中的GPIO输出寄存器(LPC_GPIO_PORT-> SET [1])中写了很多东西。在中断例程中,我正在写入这些相同的寄存器,并且正好在主循环中写入这些寄存器时发生中断,从中断返回时,这些寄存器的更改将被丢弃并替换为之前写入寄存器的更改输入中断。

我正在使用LPC1549微控制器。寄存器写入中断用于BLDC电机控制,因此您每隔10-30秒就会听到来自电机的巨响。通过减少主循环中的写入寄存器,我完全消除了这个问题。问题是,微控制器中的所有寄存器都一样吗?我找不到任何描述此问题的信息,这可能是一个严重的问题,而且一旦开始引起麻烦,也很难找到。

return interrupt cpu-registers lpc nxp-microcontroller
1个回答
0
投票

听起来是“关键部分问题”。该主题在有关操作系统的文献中弹出更多,但存在于任何具有共享资源的中断驱动平台中。它可能有助于您的搜索以查看此问题。

在您的情况下,您有2个数据访问器:中断处理程序和主循环。两者都访问相同的共享资源(内存映射的I / O)。这可能导致基于上述两个事件的时间立即覆盖更新。

关于第二个问题,这可能会影响并发系统中的任何共享资源。

© www.soinside.com 2019 - 2024. All rights reserved.