0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32F407的FreeRTOS学习笔记(9)

CHANBAEK 来源:实在太懒于是不想取名 作者:电路小白 2023-11-08 11:08 次阅读

嵌入式编程中,定时器是一个非常重要且强大的功能,用来帮我们定时性的调用中断服务函数来帮助我们处理程序。定时器通常是用硬件来实现的,例如STM32F407就有8个硬件定时器。

而在FreeRTOS中则可以用软件实现定时器。大大的扩展了定时器的数量。

图片

图片

阅读FreeRTOS开发者文档我们可以知道,软件定时器的回调函数会在定时器服务函数中执行。

同时,软件定时器的回调函数中不能调用然后可以导致阻塞的函数例如vTaskDelay()等等,包括等待信号量的函数这些也会造成阻塞。

图片

FreeRTOS会使用队列向定时器服务任务发送命令,这个队列就是定时器命令队列。

创建软件定时器

图片

在API引用文档中,我们可以查询有关创建软件定时器创建的函数。内容有许多,但是还是总归是分三个步骤:包含相关头文件、启动相关的宏、配置软件定时器。

软件定时器配置时也有三个参数需要注意,一个定时器的定时时间,一个是设置定时器重复使用还是一次项,最后需要注意的是传入调用函数的句柄。

图片

定义相关的回调函数与定时器句柄。

Timer_Handler = xTimerCreate ( (constchar*const)"xTimerCreate", (constTickType_t)500,//500ms一次(constUBaseType_t) pdTRUE,//重复(void*const)1,//定时器ID(TimerCallbackFunction_t) CallBacl );//中断服务函数句柄

接着我们定义一个轮询函数,当按键按下时,我们就开启定时器

voidLow_Task(void * pvParameters)//参数为 void * pvParameters{while(1) {if(KEY_Scan(0)==1) {xTimerStart(Timer_Handler,100);//开始定时器传入句柄以及最大等待时间} } }

在回调函数中我们让LED灯进行翻转

voidCallBacl(TimerHandle_t xTimer){ HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_10); }

同样的,在官方的API文档中我们还可以看到许多和软件定时器有关的内容,在这里不一一介绍,有感兴趣的小伙伴可以去官网查看API使用说明。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5034

    文章

    18729

    浏览量

    296852
  • 定时器
    +关注

    关注

    23

    文章

    3212

    浏览量

    113445
  • FreeRTOS
    +关注

    关注

    12

    文章

    477

    浏览量

    61646
  • STM32F407
    +关注

    关注

    15

    文章

    187

    浏览量

    29176
收藏 人收藏

    评论

    相关推荐

    STM32F407模板

    STM32F407模板,感兴趣可以看看。
    发表于07-25 18:52 129次下载

    STM32F407UCOS III实验

    STM32F407UCOS III实验,介绍基于 STM32F407的UCOSIII实例,参考下
    发表于09-22 14:08 81次下载

    STM32F407DCMI摄像头源码

    STM32F407DCMI摄像头源码(电源技术存在的问题总结)-【资源描述】: STM32F407DCMI摄像头源码【编程语言】:C语言
    发表于09-16 16:15 123次下载
    <b class='flag-5'>STM32F407</b> DCMI摄像头源码

    STM32F407标准库学习笔记-AFIO未完

    STM32F407标准库 学习 笔记-AFIO- 头文件 gpio.h#define GPIO_PinSource0 ((uint8_t)0x00)#define
    发表于11-29 15:36 2次下载
    <b class='flag-5'>STM32F407</b>标准库<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>-AFIO未完

    STM32F407标准库学习笔记-RCC

    STM32F407标准库 学习 笔记-RCC- rcc.htypedef struct{ uint32_t SYSCLK_Frequency; /*!< SYSCLK clock
    发表于11-29 15:51 13次下载
    <b class='flag-5'>STM32F407</b>标准库<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>-RCC

    STM32F407标准库学习笔记-GPIO

    STM32F407标准库 学习 笔记-GPIO头文件 gpio.h枚举-列举同一寄存器的不同选项typedef enum{ GPIO_Low_Speed = 0x00, /*!<
    发表于11-29 15:51 46次下载
    <b class='flag-5'>STM32F407</b>标准库<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>-GPIO

    STM32F407的串口UART 基础配置STM32CubeMX

    STM32F407的串口UART 基础配置 STM32CubeMX
    发表于11-29 16:06 54次下载
    <b class='flag-5'>STM32F407</b>的串口UART 基础配置<b class='flag-5'>STM32</b>CubeMX

    [STM32]STM32F407系列教程之四,pwm产生原理

    [ STM32] STM32F407系列教程之四,pwm产生原理
    发表于11-29 17:51 50次下载
    [<b class='flag-5'>STM32</b>]<b class='flag-5'>STM32F407</b>系列教程之四,pwm产生原理

    STM32F407芯片介绍

    1. 文档准备做嵌入式开发的第一步就是了解主芯片,了解 STM32F407主要要关注几个文档:1. stm32F407芯片手册2. stm32F407参考手册3. Arm Cortex-M4数据手册
    发表于12-04 13:21 109次下载
    <b class='flag-5'>STM32F407</b>芯片介绍

    STM32F407开发板用户手册】第1章 初学STM32F407的准备工作

    STM32F407开发板用户手册】第1章 初学 STM32F407的准备工作
    发表于12-04 13:36 75次下载
    【<b class='flag-5'>STM32F407</b>开发板用户手册】第1章   初学<b class='flag-5'>STM32F407</b>的准备工作

    STM32F407原理图下载

    STM32F407原理图下载
    发表于01-17 13:44 414次下载

    stm32f407原理图

    stm32f407原理图
    发表于07-14 16:07 200次下载

    STM32F407最小系统

    STM32F407最小系统免费下载。
    发表于07-31 11:01 166次下载

    STM32F407FreeRTOS开发手册 V1.1

    STM32F407 FreeRTOS开发手册_V1.1PDF文件下载。
    发表于07-31 11:16 52次下载

    STM32F407+FreeRTOS+LWIP1.4.1移植问题记录

    最近在 学习物联网相关的知识,打算用ST的开发板 STM32F407ZGT6作为控制中心,上面搭载FreeROTS实时系统, STM32F407开发板作为 TCP client
    的头像 发表于07-21 14:09 3474次阅读
    <b class='flag-5'>STM32F407+FreeRTOS</b>+LWIP1.4.1移植问题记录