STM32
直播中

李名扬

7年用户 630经验值
私信 关注
[问答]

SysTick中断没看到有清除中断标志位的语句

void SystickHandler(void)
{
   OS_CPU_SR  cpu_sr;

    OS_ENTER_CRITICAL();  //保存全局中断标志,关总中断/* Tell uC/OS-II that we are starting an ISR*/
    OSIntNesting++;
    OS_EXIT_CRITICAL();   //恢复全局中断标志
    OSTimeTick();     /* Call uC/OS-II's OSTimeTick(),在os_core.c文件里定义,主要判断延时的任务是否计时到*/
    OSIntExit();  //在os_core.c文件里定义,如果有更高优先级的任务就绪了,则执行一次任务切换            
}
我们一般写中断程序是必须自己来清除中断标志位的,但是好像这个中断没看到有清除中断标志位的语句,是不是这个中断会自己清除中断标志位呀??????

回帖(4)

李名扬

2019-4-15 09:40:36
看我们的吧:
 
//系统时钟中断服务函数
void SysTick_Handler(void)
{
OS_ENTER_CRITICAL(); /* Tell uC/OS-II that we are starting an ISR  */
    OSIntNesting++;
    OS_EXIT_CRITICAL();
    OSTimeTick();        /* Call uC/OS-II's OSTimeTick()               */
    OSIntExit();         /* Tell uC/OS-II that we are leaving the ISR  */
}
//系统时钟配置,设计1ms产生一次中断
void SysTick_Configuration(void)
{
 SysTick->CTRL&=~(1<<2);//SYSTICK使用外部时钟源
SysTick->CTRL|=1<<1;   //开启SYSTICK中断
SysTick->LOAD=9000;    //产生1ms中断
//bit2清空,选择外部时钟  HCLK/8
MY_NVIC_Init(3,3,SystemHandler_SysTick,2);//组2,最低优先级 
SysTick->CTRL|=1<<0;   //开启SYSTICK
}
呵呵
举报

姚远

2019-4-15 09:47:39
咱们写个rtos玩玩吧
举报

王欢欢

2019-4-15 09:58:16
回复【3楼】trochili:
-------------------------------
你会么?我很菜,跟你学啊....
举报

李俊一

2019-4-15 10:15:44
回复【2楼】张洋:
-------------------------------
恩  但你们的也是SysTick 中断里面没有清中断为标示呀!!!!我想知道这个是不是硬件清呀??
举报

更多回帖

发帖
×
20
完善资料,
赚取积分