本帖最后由 muyichuan2012 于 2025-1-2 18:01 编辑
AT32 WorkBench常用功能24 --FreeRTOS软件定时器使用介绍
FreeRTOS软件定时器使用介绍 本文主要介绍如何基于AT32 WorkBench配置FreeRTOS软件定时器 硬件环境 l AT-START-F437 l 下载线缆
软件环境 l AT32 Workbench l MDK5
软件定时器介绍 FreeRTOS软件定时器组的时基是基于系统时钟节拍实现的,之所以叫软件定时器是因为它的实现不需要使用任何硬件定时器,而且可以创建很多个,综合这些因素,这个功能就被称之为软件定时器组。
既然是定时器,那么它实现的功能与硬件定时器也是类似的。在硬件定时器中,我们是在定时器中断中实现需要的功能,而使用软件定时器时,我们是在创建软件定时器时指定软件定时器的回调函数,在回调函数中实现相应的功能。
FreeRTOS提供的软件定时器支持单次模式和周期性模式,单次模式就是用户创建了定时器并启动了定时器后,定时时间到将不再重新执行,这就是单次模式软件定时器的含义。周期模式就是此定时器会按照设置的时间周期重复去执行,这就是周期模式软件定时器的含义。
另外就是单次模式或者周期模式的定时时间到后会调用定时器的回调函数,用户可以回调函数中加入需要执行的工程代码。
配置步骤: 1. 打开AT32 WorkBench新建AT32F437工程
2. 在中间件中打开FREERTOS并在模式窗口中勾选启用。此时FreeRTOS会有一个默认的配置,并生成一个my_task01任务。 3. 在配置框内点击“软件定时器”,会出现软件定时器创建窗口,如下: 点击“添加”即可创建新软件定时器。 定时器名称:默认为my_timerxx(xx为数字,依次增加),用户可以任意修改软件定时器名称 回调函数:软件定时器回调函数 类型:可选择周期模式或者单周期模式 生成代码选项:默认方式或者weak方式 自动装载值:软件定时器的自动装载值,用户可根据需求配置 分配:动态或者静态 定时器数组:选择静态内存分配时有效;StaticTimer_t类型变量,用于保存软件定时器状态
4. 点击生成代码按钮,选择MDK5;便可生成FreeRTOS工程,生成代码在freertos_app.c/.h文件内
5. 打开生成工程,结构目录如下 freertos_app.c内为workbench生成的关于FreeRTOS的应用层代码,包括任务的创建,软件定时器的创建、入口函数等。
6. 下面进行试验验证,提前打开串口1打印功能(在“模块分类”中打开USART1,选择“异步模式”;然后在SYSTEM中将“串口打印”选择为USART1即可),增加软件 定时器开启代码并在软件定时器回调函数中添加打印信息,如下:
7. 编译,下载到对应开发板,打开串口助手
|