打印
[APM32F4]

【APM32F411V Tiny Board测评】+时钟配置与freertos配置

[复制链接]
773|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#申请原创#

关于时钟配置
时钟的拓扑图可以参考TRM手册里面时钟的章节

这里配置CLK的流程如下

按开发板的配置,其使用外部晶振,也就是这里的HSE,频率8M
SYSCLK是M4核心的工作时钟,最大120M,它有三个可选的来源,分别是HSE HSI和PLL1
要产生高频时钟,就必须从PLL1提供SYSCLK。因此这里使用
RCM_ConfigSYSCLK(RCM_SYSCLK_SEL_PLL);
函数来配置
这个系统时钟使用
RCM_ConfigPLL1(RCM_PLLSEL_HSE, 4,120,RCM_PLL_SYS_DIV_2,5);

函数配置,其中第一个参数是它的来源,它的来源也有两个,分别是HSE和HSI
第二个参数就是时钟图里面那个B,这里PLL1的输入端频率为2M
第三个参数为PLL1倍频值,PLL1CLK的值为240M
第四个参数为SYS PLL分频值,SYSCLK的值为120M
第五个参数为PLLD分频值,必须要分出48M时钟,因此这里只能填5
AHB分频值为1,AHB频率120M
APB2分频值为1,APB2频率120M
APB1分频值为2,APB1频率60M
在存在HSE的时候,尽量选择HSE,因为外部晶振比内部晶振准确性高,F411上有一特殊功能,即晶振因某些原因不工作时,可以自动切换到HSI,开启
RCM_EnableCSS();
即可
另外,原厂SDK里面的demo,基本都没有在main函数里面进行时钟初始化的,而是在system_apm32f4xx.c里面进行,并且这个文件,各个example都不一样。这个跟目前大家的编程习惯不一样。
FreeRTOS配置与使用
上一篇文章介绍了如何将FreeRTOS所需文件添加到工程。这里介绍一下如何配置。
首先这个systick的中断是默认打开的,暂不清楚是寄存器默认打开的还是移植过来的软件默认打开的
修改FreeRTOSConfig.h
其中configCPU_CLOCK_HZ配置为SystemCoreClock,这个值定义在system_apm32f4xx.c中,一定要配置正确,不然freertos的时钟周期会异常。这个值取的就是m4核心的主频


configMINIMAL_STACK_SIZE为一个task最小的栈大小,这个可以配置为64的
configTOTAL_HEAP_SIZE为freertos可使用的堆大小,开启task,定义mutex等都需要占用这个堆空间
freertos需要使用SVC_HandlerPendSV_HandlerSysTick_Handler三个中断处理函数

如果其他地方定义了这个中断处理函数,需要关掉,不然会报错
接下来就可以使用freertos了,使用xTaskCreate可以创建task
使用vTaskStartScheduler开始运行freertos

这里创建了一个led的task,然后在这个vTaskLedToggle里面执行led翻转操作

然后编译,下载到板上运行
如果时钟配置正确,rtos正确移植,此时可以看到板上LED隔1秒翻转一次

使用特权

评论回复
沙发
caigang13| | 2024-6-2 17:41 | 只看该作者
FREERTOS现在用的还多吗,感觉很多都切换到RTthread操作系统了。

使用特权

评论回复
板凳
星辰大海不退缩| | 2024-6-22 21:13 | 只看该作者
这2种有什么区别?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

765

帖子

2

粉丝