| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32之TIM-定时器的使用 -> 正文阅读 |
|
[嵌入式]STM32之TIM-定时器的使用 |
Stm32之TIM-定时器的使用
资料参考: 1、【正点原子】STM32F103开发板资料(A盘); 2、stm32之TIM-基本定时器应用实例 3、stm32的抢占优先级和响应优先级 文章目录STM32F103ZE 简介内核:ARM Cortex-M3,72MHz 内存:64kB RAM,512kB ROM 时钟和电源:2.00V—3.60V,72 MHz 通信 :SPI、I2C、UART、I2S、CAN、USART、USB、Device 定时器/计数器/PWM :8 × 16 位定时器 模拟:2通道 12位DAC,21通道 12位ADC I/O 和封装: -40℃—85℃,144-QFP,144-BGA 官网:https://www.keil.com/dd2/stmicroelectronics/stm32f103ze/ 一、定时器的概述定时器最基本的功能就是定时处理事情。比如定时发送USART数据、定时采集AD数据、测量输入脉冲的频率(输入捕获)、产生输出波形(比较输出或PWM)等。 STM32系列的定时器分为基本定时器、通用定时器、高级定时器。高级定时器包括前者的全部功能。 通常地,STM32包括高级定时器TIM1、TIM8,通用定时器TIM2、TIM3、TIM4、TIM5,基本定时器TIM6、TIM7,具体详见各芯片的数据手册。
注释:STM32F103系列有8个16位的定时器,且均采用72MHz的内部时钟;而F407系列则有14个且每个定时器的时钟也不同,具体使用需结合数据手册,如下图。 二、定时器的使用步骤1)TIMx时钟使能 2)初始化定时器参数,设置自动重装值,分频系数,计数方式等 3)设置TIMx_DIER允许中断 4)TIMx中断优先级设置 5)允许TIMx工作,即使能TIMx 6)编写中断服务函数 1)TIMx时钟使能基本、通用定时器的时钟来自于APB1总线; 高级定时器(TIM1、TIM8)的时钟来自于APB2总线。 针对 TIM3 时钟使能范例:
2)初始化定时器参数库函数中定时器的初始化通过TIM_TimeBaseInit()实现
第一个参数:确定哪个定时器;
针对 TIM3 初始化范例代码格式: 定时时间=(计数值)*(定时器预分频+1)/内部时钟 STM32F103的内部时钟为72MHz,为实现0.5s定时,预分频Prescaler设置为7200-1,定时器可以得到10KHz(72MHz/((7200-1)+1))的时钟频率,计数值Period设置为5000-1,可以得到定时为0.5s(5000*(1/10kHz))的定时器。
3)设置TIMx_DIER允许中断在库函数里面定时器中断使能是通过 TIM_ITConfig 函数来实现 使能TIM3 的更新中断,格式为:
4)TIMx中断优先级设置用 NVIC_Init()函数实现中断优先级的设置
根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器 NVIC_InitTypeDef定义于文件“misc.h”
针对 TIM3 中断设置范例代码格式:
NVIC 的优先级组 STM32用4位寄存器位的表示中断优先级,其的分组方式如下: 第0组:所有4位用于指定响应优先级 第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级,抢占级有2^1 =2 级;子优先级2^3=8级,共2*8=16级嵌套 第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级,抢占级有2^2 =4 级;子优先级2^2=4级,共4*4=16级嵌套 第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级,抢占级有2^3 =8 级;子优先级2^1=2级,共8*2=16级嵌套 第4组:所有4位用于指定抢占式优先级 中断响应的优先级由抢占优先级和响应优先级(子优先级)确定,若抢占优先级相同,则看响应优先级,数字越小优先级越高。 1.抢占相同,子优先级不同:按照子优先级顺序排序 5)允许TIMx工作,即使能TIMx使能定时器的函数通过 TIM_Cmd 函数来实现 void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState) 针对 TIM3 中断设置范例代码格式:
6)编写中断服务函数
比如要判断定时器3是否发生更新(溢出)中断,方法为:
比如在TIM3的溢出中断发生后,要清除中断标志位,方法是:
针对 TIM3 实现定时0.5s闪烁的中断服务函数范例:
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:51:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |