STM32 HAL库的基本定时器配置步骤

STM32有基本定时器、通用定时器、高级定时器三种定时器,我们下面讲解的是STM32F429的基本定时器Timer6
实现的功能:定时器500ms,产生定时器溢出中断,在中断服务函数中反转LED灯的亮灭

一、配置定时器基础工作参数

使用HAL_TIM_Base_Init()

TIM_HandleTypeDef g_timer_handle;void btimer6_init(uint16_t psc, uint16_t arr)
{g_timer_handle.Instance = TIM6;g_timer_handle.Init.Prescaler = psc;             //预分频系数(PSC寄存器)g_timer_handle.Init.Period = arr;                //自动重装载计数器(ARR寄存器)HAL_TIM_Base_Init(&g_timer_handle);               //此函数调用下方的HAL_TIM_Base_MspInit()HAL_TIM_Base_Start_IT(&g_timer_handle);         /* 使能定时器和定时器更新中断(此为第三步) */
}

二、定时器基础MSP初始化

使用HAL_TIM_Base_MspInit() 配置NVIC/CLOCK等

void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{if (htim->Instance == TIM6){__HAL_RCC_TIM6_CLK_ENABLE();                   //使能定时器时钟HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 2, 0);      //设置优先级HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);              //使能NVIC中断}   
}

三、使能更新中断并启动计数器

使用HAL_TIM_Base_Start_IT(), 在第一步中已经调用

四、编写中断服务函数

使用TIMx_IRQHandler() ->HAL_TIM_IRQHandler()

void TIM6_DAC_IRQHandler(void)
{HAL_TIM_IRQHandler(&g_timer_handle);printf("我在定时器中断函数中\r\n");
}

五、编写定时器溢出回调函数

使用

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance == TIM6){HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1);}   
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880467.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

选择租用徐州存储服务器有什么作用?

存储服务器主要是为特定目标所设计的,所以存储服务器的配置方式也是不同的,可以通过网络与其他服务器或者是客户端来进行连接与通信,是一种专门用于存储和管理数据信息的服务器,下面我们就来共同探讨一下租用徐州存储服务器的作用…

BaseCTF2024 web

Web [Week1] HTTP 是什么呀 GET: ?basectf%77%65%31%63%25%30%30%6d%65POST: BaseflgX-Forwarded-For:127.0.0.1Referer: BaseCookie: c00k13i cant eat itUser-Agent: Base有Location跳转, 抓包得到flag: QmFzZUNURntkZGUzZjA0Yy1hMDg5LTQwNGMtOTFjNi01ODZjMzAxMzM3Y2J9Cg…

【数据结构中的哈希】

泛黄的春联还残留在墙上.......................................................................................................... 文章目录 前言 一、【哈希结构的介绍】 1.1【哈希结构的概念】 1.2【哈希冲突】 1.3【哈希函数的设计】 1.4【应对哈希冲突的办法】 一、…

Unity图形用户界面!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。(万字解析)

Unity 3D GUI 简介 游戏开发过程中,开发人员往往会通过制作大量的图形用户界面( Graphical User Interface,GUI )来增强游戏与玩家的交互性。 Unity 3D 中的图形系统分为 OnGUI、NGUI、UGUI等,这些类型的图形系统内容…

[大语言模型-论文精读] ACL2024-长尾知识在检索增强型大型语言模型中的作用

ACL2024-长尾知识在检索增强型大型语言模型中的作用 On the Role of Long-tail Knowledge in Retrieval Augmented Large Language Models Authors: Dongyang Li, Junbing Yan, Taolin Zhang, Chengyu Wang, Xiaofeng He, Longtao Huang, Hui Xue, Jun Huang 1.概览 问题解决&…

第五部分:4---Linux闹钟机制

闹钟机制: Linux 的闹钟机制为用户提供了一种设置和管理闹钟的方式。用户通过系统调用设置闹钟,操作系统负责在指定时间后处理这些闹钟。 闹钟结构体和链表: 操作系统为每个闹钟创建一个结构体对象,这个对象包含有关闹钟的信息&…

pyhton语法 正则表达式

pyhton语法 正则表达式 1.正则表达式介绍1.1 正则表达式入门1.2 正则替换 2.正则效验2.1正则-校验单个字符2.2正则-校验多个字符2.3 正则-校验开头和结尾2.4 正则-校验分组2.5 正则校验邮箱2.6正则获取分组后的数据2.7 引用指定组的内容 总结 1.正则表达式介绍 1.1 正则表达式…

OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【LMS调测】

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 基本概念 LMS全称为Lite Memory Sanitizer,是一种实时…

经验笔记:Python 脚本打包为可执行文件(.exe)

Python 脚本打包为可执行文件的经验笔记 概述 在开发完一个Python脚本后,你可能希望将其分享给没有Python环境的用户。这时,将Python脚本打包成独立的可执行文件(.exe)是一个很好的选择。本文档将介绍如何使用 PyInstaller 工具…

建立分支提交代码

git分支 git branch 产看当前分支 git branch -a 查看所有分支 git checkout 分支名 切换分支 git checkout -b 分支名 建立分支(仅仅是在本地建立了,并没有关联线上) git push --set-upstream origin 分支名 把本地分支推到先线上 gti add …

自定义认证过滤器和自定义授权过滤器

目录 通过数据库动态加载用户信息 具体实现步骤 一.创建数据库 二.编写secutity配置类 三.编写controller 四.编写服务类实现UserDetailsService接口类 五.debug springboot启动类 认证过滤器 SpringSecurity内置认证流程 自定义认证流程 第一步:自定义一个类继承Abstra…

口语笔记——时态

引言 英语的时态(Tense)是一种动词形式,不同时态用于表示不同时间,例如do, did分别表示现在和过去。 英语中共有16种时态,如下表所示: 现在过去将来过去将来一般一般现在时一般过去时一般将来时一般过去…

AI大模型横评-9月Update(O1,Grok2,Qwen,Step-2)

#0 本期看点1)各大模型纷纷推出大规模,排行榜剧烈变动2)OpenAI新模型O1似乎要杀死比赛3)阿里,腾讯翻身一跃#1 前情提要本评测是个人性质,结合自己需求和对大模型的理解,使用私有题库进行长期跟踪…

CTFshow-SSRF

web351&#xff1a; <?php // 开启PHP文件 error_reporting(0); // 这行代码将PHP的错误报告级别设置为0&#xff0c;意味着关闭所有错误和警告的显示。这通常用于生产环境&#xff0c;以避免暴露敏感信息或错误信息给用户。然而&#xff0c;在开发过程中&#xff0c…

信息技术网络安全政策制定

为什么要制定网络安全政策&#xff1f; 通常&#xff0c;公司并不认为需要制定网络安全政策。现有的政策是为了保护公司的资产&#xff0c;而数据也是一项资产。 网络安全政策的真正必要性很简单&#xff1a;网络安全并不像锁门或不偷公司笔那么简单。在许多情况下&#xff0…

git 如何基于某个分支rebase?

文章目录 0. 概要1. 切换到你想要 rebase 的分支2. 执行 rebase 命令3. 解决冲突&#xff08;如果有&#xff09;4. 强制推送分支&#xff08;如果已经推送过该分支&#xff09; 0. 概要 之前介绍过如下git文章 git merge的三种操作merge, squash merge, 和rebase merge 如何使…

锤炼核心技能以应对编程革命

一、引言  随着人工智能的快速发展&#xff0c;尤其是AIGC等大语言模型的涌现&#xff0c;AI辅助编程工具逐渐成为程序员的新伙伴。这一变革不仅引发了关于AI是否能取代部分编程工作的讨论&#xff0c;也促使程序员重新思考自己的职业发展和技能提升路径。在AI时代&#xff0…

linux网络编程9

24.9.26学习目录 一.Web编程1.Javascript3.CGI 一.Web编程 1.Javascript 是一种基于对象并具有安全性能的脚本语言&#xff0c;是由浏览器内解释器翻译成可执行格式后执行&#xff1b; 即是网页与用户完成各种交互动作&#xff1b; 特点&#xff1a;基于对象的语言、简单性、…

前海石公园的停车点探寻

前海石公园是真的很美&#xff0c;很多看海人&#xff0c;很多钓鱼佬&#xff0c;很多抓螃蟹的人&#xff0c;很多挖沙子的人&#xff0c;很多拍照的人&#xff0c;尤其是没有大太阳的时间段或每天傍晚或每个放假的时候人气超高&#xff0c;故前海石公园停车真的很紧张。由于前…

Unreal Engine 5 C++: 编辑器工具编写入门01(中文解释)

目录 准备工作 1.创建插件 2.修改插件设置 快速资产操作&#xff08;quick asset action) 自定义编辑器功能 0.创建编辑器button&#xff0c;测试debug message功能 大致流程 详细步骤 1.ctrlF5 launch editor 2.创建新的cpp class&#xff0c;derived from AssetAction…