共2条
1/1 1 跳转至页
zlg,LPC2210,uc,os 请教zlg:LPC2210的uc/os操作系统中断问题

问
我用LPC2210板在非操作系统下做了一个简单的A/D采样电压的任务,其中采样结果用中断读取的,很正常.但是当用UC/OSII时,在中断程序中老是跳到“取数据中止
DataAbort
B DataAbort”
我所做的操作有:
在irq.s中添加:ADC_Handler HANDLER ADC_Exception
在target.c添加:
void VICInit(void)
{
extern void IRQ_Handler(void);
extern void Timer0_Handler(void);
extern void ADC_Handler(void);
VICIntEnClr = 0xffffffff;
VICDefVectAddr = (uint32)IRQ_Handler;
VICVectAddr0 = (uint32)Timer0_Handler;
VICVectCntl0 = (0x20 | 0x04);
VICVectAddr8 = (uint32)ADC_Handler;
VICVectCntl8 = (0x20 | 0x12);
VICIntEnable = ((1 << 4)|(1<<18));
}
这是我的中断服务程序:发一个信号量给一个任务.
void ADC_Exception(void)
{
OS_ENTER_CRITICAL();
OSSemPost(Sem_Addr);
VICVectAddr = 0; // 通知中断控制器中断结束
OS_EXIT_CRITICAL();
}
请问我是不是漏了什么地方啊?
在操作系统下使用中断需要注意什么?
恳请不吝赐教.
答 1: 先看看你的uc\os能不能正常阿 答 2: uc/os完全正常uc/os完全正常 :我用别的工程实验都正常啊 答 3: 有可能是中断嵌套的问题!!!
DataAbort
B DataAbort”
我所做的操作有:
在irq.s中添加:ADC_Handler HANDLER ADC_Exception
在target.c添加:
void VICInit(void)
{
extern void IRQ_Handler(void);
extern void Timer0_Handler(void);
extern void ADC_Handler(void);
VICIntEnClr = 0xffffffff;
VICDefVectAddr = (uint32)IRQ_Handler;
VICVectAddr0 = (uint32)Timer0_Handler;
VICVectCntl0 = (0x20 | 0x04);
VICVectAddr8 = (uint32)ADC_Handler;
VICVectCntl8 = (0x20 | 0x12);
VICIntEnable = ((1 << 4)|(1<<18));
}
这是我的中断服务程序:发一个信号量给一个任务.
void ADC_Exception(void)
{
OS_ENTER_CRITICAL();
OSSemPost(Sem_Addr);
VICVectAddr = 0; // 通知中断控制器中断结束
OS_EXIT_CRITICAL();
}
请问我是不是漏了什么地方啊?
在操作系统下使用中断需要注意什么?
恳请不吝赐教.
答 1: 先看看你的uc\os能不能正常阿 答 2: uc/os完全正常uc/os完全正常 :我用别的工程实验都正常啊 答 3: 有可能是中断嵌套的问题!!!
共2条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
【STM32F769】AI之与本地deepseek对接被打赏50分 | |
Buck电路工作在CCM模式下电感电流的计算公式是什么?被打赏5分 | |
buck电路工作原理被打赏5分 | |
基于MSPM0L1306的MODBUS-RTU协议通讯实验被打赏100分 | |
我想要一部加热台+多合一调试工具被打赏18分 | |
每周了解几个硬件知识+485硬件知识分享被打赏10分 | |
【换取手持数字示波器】树莓派PICO调试器官方固件本地化部署实践被打赏24分 | |
【换取手持数字示波器】分享一个KEIL无法识别CMSIS-DAP调试器的解决办法被打赏20分 | |
【换取手持数字示波器】分享一个自制的ArduinoNano扩展板底板被打赏23分 | |
【换取手持示波器】树莓派PICOW网页烟花被打赏18分 |