理论上这几个文件我们完全不用修改!但是,他依赖外部的一些头文件; app_cfg.h //应用程序的一些功能,目测这里是不需要的;但是他已经写了,那我们就保留吧;所以我们就要先建立一个空的app_cfg.h文件 os_cfg.h //做一些os功能的开关,我们可以由此来对系统进行一些裁剪;保留我们需要的功能; os_cpu.h //为了适应os,我们必须把os与cpu之间建立一个桥梁;就是通过os_port来进行建立的;
再次就是修改startup_stm32f769xx.s文件 PendSV_Handler ; PendSV Handler SysTick_Handler ; SysTick Handler 把这2个函数的名字统一 第四就是配置os_cfg.h 里面的功能 第五就可以开始正式的新建任务了, //LED0任务 void led0_task(void *pdata) { while(1) { GPIOJ->BSRR=(1 << 5) << 16; delay_ms(80); GPIOJ->BSRR=1 << 5; delay_ms(920); }; } //LED1任务 void led1_task(void *pdata) { while(1) { GPIOJ->BSRR=(1 << 13) << 16; delay_ms(300); GPIOJ->BSRR=1 << 13; delay_ms(300); }; } 在主函数增加如下的调度即可运行 //LED0任务 OSTaskCreateExt((void(*)(void*) )led0_task, (void* )0, (OS_STK* )&LED0_TASK_STK[LED0_STK_SIZE-1], (INT8U )LED0_TASK_PRIO, (INT16U )LED0_TASK_PRIO, (OS_STK* )&LED0_TASK_STK[0], (INT32U )LED0_STK_SIZE, (void* )0, (INT16U )OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR|OS_TASK_OPT_SAVE_FP); //LED1任务 OSTaskCreateExt((void(*)(void*) )led1_task, (void* )0, (OS_STK* )&LED1_TASK_STK[LED1_STK_SIZE-1], (INT8U )LED1_TASK_PRIO, (INT16U )LED1_TASK_PRIO, (OS_STK* )&LED1_TASK_STK[0], (INT32U )LED1_STK_SIZE, (void* )0, (INT16U )OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR|OS_TASK_OPT_SAVE_FP); 笔者也是做了个简单的例程,LED亮灭,2个led,2个任务,简单的任务调度,希望给刚入门的兄弟们有个引导。 下图是下载固件后的效果图 下面是视频是实际效果 点击此处,查看STM32F769I开发板官方资源。 本帖最后由 star_66666 于 2016-12-16 00:14 编辑