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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版