【凌鸥创芯电机开发板LKS32MC071CBT8评测报告】移植FreeRTOS
本帖最后由 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)) // S1ms中断一次
{
/* 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闪烁一次,完美{:lol:}{:lol:}
最后上传完整的工程。
这是最近看到的嘴硬核的文章了,必须好评 需要详细了解目标硬件平台的架构、处理器类型、内存布局等。这将有助于 理解如何将FreeRTOS适配到该硬件上。 FreeRTOS的任务调度依赖于定时器中断。 确保为FreeRTOS分配足够的内存 执行的函数都在source/portable目录下的文件port.c或portasm.s中 FreeRTOS的官方文档和相关参考资料在哪里下载的 需要考虑处理器架构、时钟频率、存储器类型和大小、外设接口等因素,并根据这些信息进行相应的配置和适配。 FreeRTOS提供了许多配置选项 ,怎么选择呢? 从FreeRTOS的官方网站下载最新版本的源代码。 根据实际需求,对移植的FreeRTOS进行性能优化和调整。 这个必须好评,好评,很棒的文章。 这个文章确实不错,很棒的
很棒的文章,学习了很多知识,不错的。
页:
[1]