[分享]uC/OS-II在TI LM3S8962芯片上的移植示例程序
本例仅提供了初始化板载时钟及板载LED灯,因此,可以方便移植与扩展。本例中还增加了jtagprotect函数,以防止由于时钟等其它原因而造成的jtag锁死现象。
在首个task里,我们建立了App_TaskBlink任务,而App_TaskBlink任务为以LED灯以5Hz的频率来闪烁。
如下所示:
static void App_TaskStart (void *p_arg){
INT32U cnts;
(void)p_arg;
// initalize the systick 1000Hz
cnts = SysCtlClockGet() / OS_TICKS_PER_SEC;
OS_CPU_SysTickInit(cnts);
#if (OS_TASK_STAT_EN > 0)
OSStatInit(); /* Determine CPU capacity. */
#endif
INT8U os_err;
os_err = OSTaskCreateExt((void (*)(void *)) App_TaskBlink,
(void * ) 0,
(OS_STK * )&App_TaskBlinkStk[APP_TASK_BLINK_STK_SIZE - 1],
(INT8U ) APP_TASK_BLINK_PRIO,
(INT16U ) APP_TASK_BLINK_PRIO,
(OS_STK * )&App_TaskBlinkStk[0],
(INT32U ) APP_TASK_BLINK_STK_SIZE,
(void * ) 0,
(INT16U )(OS_TASK_OPT_STK_CLR | OS_TASK_OPT_STK_CHK));
#if (OS_TASK_NAME_EN > 0)
OSTaskNameSet(APP_TASK_BLINK_PRIO, (INT8U *)"blink", &os_err);
#endif
while(1) {
OSTaskSuspend(OS_PRIO_SELF);
}
}
static void App_TaskBlink (void *p_arg){
(void)p_arg;
while(1) {
BSP_LED_On();
OSTimeDlyHMSM(0, 0, 0, 100);
BSP_LED_Off();
OSTimeDlyHMSM(0, 0, 0, 100);
}
}
为了防止jtag被锁死,我们增加了ProtectJtag函数,示例代码如下:
void ProtectJtag(void){
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_4, GPIO_DIR_MODE_IN);
while(GPIOPinRead(GPIO_PORTB_BASE, GPIO_PIN_4) == 0) {
;
}
}
工程文件源代码 请点击下载ucosii00.zip
使用IAR EWARM 6.4调试