STM32F407 跑uscosII问题
OSStartHighRdyLDR R4, =NVIC_SYSPRI2 ; set the PendSV exception priority
LDR R5, =NVIC_PENDSV_PRI
STR R5,
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,
;Çл»µ½×î¸ßÓÅÏȼ¶µÄÈÎÎñ
LDR R4, =NVIC_INT_CTRL ;rigger the PendSV exception (causes context switch)
LDR R5, =NVIC_PENDSVSET
STR R5,
CPSIE I ;enable interrupts at processor level
OSStartHang
B OSStartHang ;should never get here
之前程序的功能一直是正常的,在工程打开时,压缩一下工程,再运行时,运行这个函数OSStart()时,就停在上述红色标注的位置处,有谁知道原因吗?
上面的汇编代码开启了PendSV中断,但是没有进入PendSV中断,而是进入下面的函数
说明你xxxx.S启动文件的中断向量表PendSV入口函数跟uCOS-II的入口函数不统一。
另外SysTick也有这个问题,要注意。 baiyongbin2009 发表于 2018-11-14 03:22
上面的汇编代码开启了PendSV中断,但是没有进入PendSV中断,而是进入下面的函数
说明你xxxx.S启动文件的中 ...
PendSV 的函数名都是PendSV_Handler 完全一样的。 annqian 发表于 2018-11-14 08:54
PendSV 的函数名都是PendSV_Handler 完全一样的。
方便的话,上传你的移植工程看看。 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_TASK_PRIO);//prio=5
OSStart(); //¿ªÊ¼ÈÎÎñ
}
程序死在OSStart(); annqian 发表于 2018-11-14 10:58
int main(void)
{
delay_init(10); //ÑÓʱ³õʼ»¯
应该是要多个task的吧,你再开一个试试 haotian103 发表于 2018-11-14 22:21
应该是要多个task的吧,你再开一个试试
cmd task 中创建了3个其它的task
页:
[1]