嵌入式学习小组
直播中

陈超

7年用户 934经验值
私信 关注

为什么ucosII移植后开关中断函数总是报错?

今天移植了一下2.86版本的ucosii到 RC;出现问题了
在对移植需要修改的文件改完了之后,在main.C里面 创建开始任务,代码如下
static void start_task(void *p_arg)
{
systick_init();     /* Initialize the SysTick. ??????????????*/
p_arg=p_arg;
OS_ENTER_CRITICAL();                                 //关中断
OSTaskCreate(led_task, (void *)0,
(OS_STK *)&LED_Task_STK[LED_STK_Size-1],
LED_Task_PRIO);                               //
OSTaskSuspend(Start_Task_PRIO);                     
OS_EXIT_CRITICAL();  //开中断
}
加粗这两句就报错了,提示..Userapp.c(75): error:  #20: identifier "cpu_sr" is undefined
但是我在main。c开头加上
#if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
   OS_CPU_SR     cpu_sr;
#endif
不加开关中断,功能能实现;加了开关中断,有这个定义不会报错,也能实现功能
但我感觉这样肯定不对啊,我估计我还是哪儿配置错了,但是具体找不到,希望大神帮忙看看,谢谢了
STM32移植uCOSII-核心板.rar (377.65 KB )

回帖(2)

李林松

2019-7-26 07:30:47
看我们的UCOS例程,调用OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()之前必须声明变量cpu_sr!!!也就是语句:OS_CPU_SR     cpu_sr;
举报

陈亮

2019-7-26 07:38:35
哦哦,我看到了,    OS_CPU_SR     cpu_sr; 这句定义在了开始任务里面,
谢谢
举报

更多回帖

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