ucos系统进不了中断怎么回事
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ucos系统进不了中断怎么回事相关的知识,希望对你有一定的参考价值。
参考技术A ucosii实时操作系统的任务不能是中断服务程序,但仍然可以用一个中断服务程序来服务于操作系统的一个或多个任务,比如可以在中断服务程序使中用消息邮箱,或消息队列(OSQPost())等向任务发送按键消息,以唤醒等待按键的任务,注意在中断服务程序的开始调用OSIntEnter();告诉任务进入中断服务,禁止调度,执行完时再调用OSIntExit()来退出中断服务程序,这样,按键任务要做的就是等待按键(比如调用OSQPend()挂起),待唤醒后对按键进行为行处理,同样可以用邮箱等方式与流水等任务通信,告知流水灯任务如何运行,这样,你这两个任务就可以有条不紊的运转起来了 参考技术B 这种情况应该是硬件进行处理的,而不是uCOS。而且你只是禁止全局中断而已,通常中断标志位还在的啊(只是不响应)。arm7 lpc2478在ucos操作系统下定时器中断程序怎么写?急切请教!
呵呵!那个你看里面的tmr的代码就知道了!比较简单的!肯定是不能用_irq的!我给你贴段代码出来!你参考哈!void UartInit(CPU_INT32U PortNum,CPU_INT32U baudrate )
CPU_INT32U Fdiv;
if ( PortNum == 0 )
#if UART0_EN>0
PINSEL0 = 0x00000050; /* RxD0 和 TxD0 */
U0LCR = 0x83; /* 8 位数据位, 无校验位, 1 位停止位 */
Fdiv = ( Fpclk / 16 ) / baudrate ; /*波特率设置 */
U0DLM = Fdiv / 256;
U0DLL = Fdiv % 256;
U0LCR = 0x03; /* DLAB = 0 */
U0FCR = 0x07; /* 使能和复位 TX 和 RX 的FIFO */
VICIntSelect &= ~(1 << VIC_UART0); /* 配置uart0中断为 IRQ 中断源 */
VICVectAddr6 = (CPU_INT32U)Uart0_ISR_Handler; /* 设置中断地址 */
VICIntEnable = (1 << VIC_UART0); /* 使能uart0中断源 */
U0IER = IER_RBR | IER_THRE | IER_RLS; /* 使能 UART0 的中断 */
下面是中断服务程序ISR
void Uart0_ISR_Handler(void)
#if UART0_EN>0
#if OS_CRITICAL_METHOD == 3 /* 分配存储空间给CPU状态寄存器 */
OS_CPU_SR cpu_sr = 0;
#endif
CPU_INT08U IIRValue, LSRValue;
CPU_INT08U Dummy = Dummy;
只截了一部分哈!主要是后面是我们公司一个项目里面的了!呵呵! 参考技术A 先学裸机下的中断程序追问
裸机中断服务程序前会有_irq 但在操作系统下加的话就会出错,请问为什么?
以上是关于ucos系统进不了中断怎么回事的主要内容,如果未能解决你的问题,请参考以下文章