本帖最后由 jiangyimfs 于 2023-6-21 20:08 编辑
#申请原创#
上周末就已经收到了凌鸥寄来的开发板,看了一下LKS07的RAM有12k,跑个freertos看看,前几天做了移植,下面做个记录。
移植freertos的教程网上应该有很多,我主要说明一下,移植的过程中需要注意的一些点。
1.复制FreeRTOS文件夹到对应的工程文件下面,添加对应的.c,.h文件到工程下,这部分可以参考网上的很多例子,这里就不再详细描述了。
需要注意LKS07是M0内核的,需要添加ARM_CM0下的port.c
2.修改 FreeRTOSConfig.h 里面的设置,如下图所示。
LKS07的主频是96M,修改configCPU_CLOCK_HZ (96000000) , 修改configTOTAL_HEAP_SIZE ((size_t)(8 * 1024))
3.配置 FreeRTOS的时钟基准,如下图所示。
初始化systick中断,时基设置成1ms。
void delay_init(void)
{
if (SysTick_Config(SystemCoreClock / 1000)) // S 1ms中断一次
{
/* Capture error */
while (1);
}
// 关闭滴答定时器
//SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
}
]
在SysTick_Handler中断中添加如下代码。
void SysTick_Handler(void)
{
gMS_Counter++;
if(xTaskGetSchedulerState()!=taskSCHEDULER_NOT_STARTED)//系统已经运行
{
xPortSysTickHandler();
}
}
]
4.在main.c里面添加起始任务,app,cnt任务,设置堆栈的大小和任务的优先级别
5.使用串口0,打印信息,添加如下代码。
6.添加了两个人,app任务,led每隔500ms闪烁一次,打印一次APP_task is run!
cnt任务 每隔2000ms闪烁一次,打印一次cnt_task is run!! 。
7. 下载程序,使用串口打印,查看时间基准是否准确
我们可以查看查看串口的打印的时间戳,2000ms误差在10几个ms,基本还是比较准确的,LED灯也是每隔500ms闪烁一次,完美
最后上传完整的工程。
|
赞~!