当前位置: 首页 > news >正文

库尔勒网站建设哪家好网络推广可做哪些方面

库尔勒网站建设哪家好,网络推广可做哪些方面,wordpress 公众号登录,网页设计实训结论STM32F4X 定时器中断 什么是定时器STM32F4X 定时器分类有关定时器的概念预分频(PSC)自动重装载值(ARR) STM32F4X定时器例程定时器相关函数定时器例程 什么是定时器 定时器(Timer)最基本的功能就是定时,比如定时翻转LED灯,定时向串口发送数据等。除此之外…

STM32F4X 定时器中断

  • 什么是定时器
  • STM32F4X 定时器分类
  • 有关定时器的概念
    • 预分频(PSC)
    • 自动重装载值(ARR)
  • STM32F4X定时器例程
    • 定时器相关函数
    • 定时器例程

什么是定时器

定时器(Timer)最基本的功能就是定时,比如定时翻转LED灯,定时向串口发送数据等。除此之外,定时器还可以跟GPIO结合使用,利用定时器产生PWM波形,利用定时器捕捉电平信号等。本章先来讲解定时器的最基本的用法,定时功能。

STM32F4X 定时器分类

STM32F4X将定时器分成3类,分别是基本定时器,通用定时器和高级定时器,不同类型的定时器功能不同。下图是STM32F4X的定时器分类以及功能。本章会用基本定时器,也就是TIM6或者TIM7来进行讲解。
在这里插入图片描述

有关定时器的概念

预分频(PSC)

定时器想要工作,首先要用时钟,时钟的作用是给定时器一个时基,让定时器按照这个时基单元进行计数。在STM32F4中,定时器是的时钟源是APB时钟。比如APB的时钟是84MHz,那么定时器的时钟就是84MHz。而预分频的作用是对定时器的时钟源进一步细分,得到用户想要的时钟频率。比如用户觉得84MHz的时钟频率太高了,想得到一个42MHz的频率,就可以往定时器的预分频寄存器里面写1(注意:定时器的预分频寄存器会将预分频系数自动加1),就会得到42MHz的频率。
在这里插入图片描述
在这里插入图片描述
要注意的时定时器的时钟源会根据硬件自动选择,具体如下图所示。
高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线。
通用定时器timer2 ~ timer5,通用定时器timer12 ~ timer14以及基本定时器timer6,timer7的时钟来源是APB1总线。

在这里插入图片描述

自动重装载值(ARR)

上面的预分频寄存器设置了定时器的计数频率,那么用户要怎样才能得到想要的定时值呢,这就需要自动重装载值寄存器了。自动重装载寄存器的作用是设置定时器的溢出值,当定时器计数超过自动重装载值寄存器里面值的时候,就会产生一个溢出中断。下面举个例子说明一下。
比如现在需要一个500ms的定时器,APB时钟是84MHz,我们可以这样设置。
预分频系数设置为8399,即定时器的计数频率为84Mhz / 8400 = 10KHZ,定时器每隔10KHz计一次数,也就是0.1ms记一次数,想要得到500ms的定时时间,只需要往自动重装载值寄存器里面写4999即可,也就是0.1*5000 = 500ms。
定时器的计算公式如下:
Tout = (1 / (Tclk / (psc + 1))) * (arr + 1)
Tout:定时器溢出值
Tclk:定时器时钟频率
psc:定时器预分频值
arr:自动重装载值

STM32F4X定时器例程

定时器相关函数

/*
定时器初始化函数
TIMx:定时器索引
TIM_TimeBaseInitStruct:定时器初始化结构体
*/
void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)/*
定时器中断使能函数
TIMx:定时器索引
TIM_IT:定时器中断类型
NewState:定时使能
*/
void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState)/*
定时器获取中断状态函数
TIMx:定时器索引
TIM_IT:定时器中断类型
返回值:定时器中断状态
*/
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT)/*
定时器清除中断状态函数
TIMx:定时器索引
TIM_IT:定时器中断类型
*/
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)

定时器例程

该例程是使用定时器7产生一个500ms的中断

#include "timer.h"void bsp_timer_init(void)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;NVIC_InitTypeDef NVIC_InitStruct;RCC_ClocksTypeDef RCC_Clocks;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7,ENABLE); // 使能定时器7时钟TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数模式TIM_TimeBaseInitStruct.TIM_Period = 4999; // 重装值为5000 500ms中断一次TIM_TimeBaseInitStruct.TIM_Prescaler = 8399; // 预分配值为8400 即84000000/8400 = 10KHZ 0.1ms计一次书TIM_TimeBaseInit(TIM7,&TIM_TimeBaseInitStruct); // 初始化定时器7NVIC_InitStruct.NVIC_IRQChannel = TIM7_IRQn;NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2;NVIC_InitStruct.NVIC_IRQChannelSubPriority  = 2;NVIC_Init(&NVIC_InitStruct);  // 配置定时器7 NVIC中断TIM_ITConfig(TIM7,TIM_IT_Update,ENABLE); // 使能更新中断TIM_Cmd(TIM7,ENABLE); // 使能定时器7}void TIM7_IRQHandler(void)
{if(TIM_GetFlagStatus(TIM7,TIM_IT_Update) == SET) // 判断是否为定时器7更新中断{printf("%s\r\n",__func__);TIM_ClearITPendingBit(TIM7,TIM_IT_Update);	// 清除定时器7更新中断}}

打开Xcom串口助手,勾选时间戳功能,可以看到串口每隔500ms就进入中断并打印信息。
在这里插入图片描述

http://www.yayakq.cn/news/751309/

相关文章:

  • 授权购买网站店面设计餐饮风格
  • 方维制网站杭州网站建设手机版
  • html网站开发工具下载app制作公司上海
  • 中企高呈网站建设金融视频直播网站开发
  • 哪个浏览器能打开那种网站能力天空的网站建设优劣势
  • 网站建设和维护做什么成都网站设计公司哪家好
  • 专业的网站建设企业网站wordpress页面分类插件
  • 网站建设成都公司游戏网站建设免费版
  • 柳州在哪里做网站设计培训机构
  • 亚马逊网站建设特点农业局网站建设方案
  • 宁波市建设局网站做网站分类链接
  • 线上培训平台搭建佛山公司推广优化
  • 网站修改文案免费资料网站网址下载
  • 西安网络推广网站优化开发门户网站报价
  • 网站被做暗链报告浏览器主页网址推荐
  • 网站建设方案规划书wordpress微信公众号采集插件
  • 班级博客网站模板wordpress过滤器插件6
  • 网站开发者模式网站设计制作说明
  • ss网站模板免费下载微信卖货小程序怎么做
  • 北京网站备案公司强生公司网站
  • 网站标题用什么符号网站总体规划设计说明
  • 郴州网站运营公司湖州做网站的
  • 深圳宝安p2p网站系统的建设哪里有个人品牌营销公司
  • 做app+的模板下载网站两学一做是什么网站
  • 淮北建设网站自己做链接的网站吗
  • 茶叶网站建设目的天津高端品牌网站建设
  • 交互网站怎么做云南网站的设计公司
  • wap网站前台做家务的男人网站
  • 重视机关网站建设画册宣传册设计公司
  • 网站邮箱怎么做的中文域名可以做网站吗