共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 跳转至页
回复
有奖活动 | |
---|---|
“我踩过的那些坑”主题活动——第002期 | |
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |