你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F407 跑uscosII问题

[复制链接]
annQian 提问时间:2018-11-13 15:29 /
OSStartHighRdy
        LDR     R4, =NVIC_SYSPRI2      ; set the PendSV exception priority
        LDR     R5, =NVIC_PENDSV_PRI
        STR     R5, [R4]
        MOV     R4, #0                 ; set the PSP to 0 for initial context switch call
        MSR     PSP, R4
        LDR     R4, =OSRunning         ; OSRunning = TRUE
        MOV     R5, #1
        STRB    R5, [R4]
                                       ;Çл»µ½×î¸ßÓÅÏȼ¶µÄÈÎÎñ
        LDR     R4, =NVIC_INT_CTRL     ;rigger the PendSV exception (causes context switch)
        LDR     R5, =NVIC_PENDSVSET
        STR     R5, [R4]
        CPSIE   I                      ;enable interrupts at processor level
OSStartHang
        B       OSStartHang            ;should never get here     

之前程序的功能一直是正常的,在工程打开时,压缩一下工程,再运行时,运行这个函数OSStart()时,就停在上述红色标注的位置处,有谁知道原因吗?

收藏 评论6 发布时间:2018-11-13 15:29

举报

6个回答
baiyongbin2009 回答时间:2018-11-14 03:22:18
上面的汇编代码开启了PendSV中断,但是没有进入PendSV中断,而是进入下面的函数

说明你xxxx.S启动文件的中断向量表PendSV入口函数跟uCOS-II的入口函数不统一。

另外SysTick也有这个问题,要注意。
annQian 回答时间:2018-11-14 08:54:44
baiyongbin2009 发表于 2018-11-14 03:22
上面的汇编代码开启了PendSV中断,但是没有进入PendSV中断,而是进入下面的函数

说明你xxxx.S启动文件的中 ...

PendSV 的函数名都是PendSV_Handler 完全一样的。
baiyongbin2009 回答时间:2018-11-14 10:21:39
annqian 发表于 2018-11-14 08:54
PendSV 的函数名都是PendSV_Handler 完全一样的。

方便的话,上传你的移植工程看看。
annQian 回答时间:2018-11-14 10:58:33
baiyongbin2009 发表于 2018-11-14 10:21
方便的话,上传你的移植工程看看。

int main(void)
{   
        delay_init(10);       //ÑÓʱ³õʼ»¯
    Init_Gpio();
        uart_init(9600);
           //´®¿Ú²¨ÌØÂÊÉèÖÃ
       
    USART_SendData(USART1, 0xaa);  //for test use   
        OSInit();  //UCOS³õʼ»¯
   
        OSTaskCreate(CMD_task,(void*)0,(OS_STK*)&CMD_TASK_STK[CMD_STK_SIZE -1],CMD_TASK_PRIO);//prio=5       
        OSStart(); //¿ªÊ¼ÈÎÎñ
   
}
程序死在OSStart();
haotian103 回答时间:2018-11-14 22:21:08
annqian 发表于 2018-11-14 10:58
int main(void)
{   
        delay_init(10);       //ÑÓʱ³õʼ»¯

应该是要多个task的吧,你再开一个试试
annQian 回答时间:2018-11-15 10:52:56
haotian103 发表于 2018-11-14 22:21
应该是要多个task的吧,你再开一个试试

cmd task 中创建了3个其它的task
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版