【AT-START-F403A测评】之二freeRTOS系统基于IAR环境时钟配置及串口DMA实现完全printf功能
通过上一次测评,仅实现了简单任务切换,任务中断机制尚未实现。本次评估实现了任务中断切换等功能。通过使用DMA及其中断机制实现完整printf功能,为了获得优良的DMA性能,先看一下时钟系统的配置。
时钟配置:
- 项目中Startup目录下system_at32f4xx.c可以实现系统时钟的配置,当然,也可以在运行时调整。评测按照最高时钟设置。
- 为了便于观察配置结果,设置一个RCC_ClockType 类型全局变量systemClock,在main启动中,可以通过RCC_GetClocksFreq(&systemClock)获得系统时钟的配置情况。
- 启动调试断点停下后,在watch中观察变量systemClock
- 确认时钟配置
在datasheet的RCC的CFG寄存器描述时钟输出如下,寄存器与描述实际是一致,目前配置为外部8MHz时钟为PLL时钟源,PLL时钟作为系统时钟输出240MHz。需要注意的是,如果不修改上述配置,默认是系统时钟及APB等均为8MHz。
完全printf功能实现:
- 通过uart以DMA方式发送打印字符实现测评,基于上一篇评测(《at-start-f403a测评之一--freeRTOS系统搭建》)的三个任务,增加串口DMA打印功能,评测中命名为console功能。
- 实现串口DMA打印,驱动分别对gpio,串口和DMA设备的初始化。
- 串口gpio设备初始化
-
- 串口设备初始化
-
- dma设备初始化
允许RCC及DMA中断配置。
-
- console功能初始化
-
- DMA发送
-
- console功能实现
在原有三个点灯任务中加入console功能实现
-
- 功能结果示例
本帖最后由 uuxz99 于 2020-10-3 21:08 编辑