历史上的今天
今天是:2024年12月21日(星期六)
2018年12月21日 | STM32初识——通用定时器配置
2018-12-21 来源:eefocus
通用定时器的益处时间
Tout= ((arr+1)*(psc+1))/Tclk;
TIM3时钟使能
TIM3 是挂载在 APB1 之下,所以我们通过 APB1 总线下的时钟使能函数来使能 TIM3。调用的函数是:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
初始化定时器参数,设置自动重装值,分频系数,计数方式。
在库函数中,定时器的初始化参数是通过初始化函数 TIM_TimeBaseInit 实现的:
voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
第一个参数是确定是哪个定时器,这个比较容易理解。第二个参数是定时器初始化参数结构体指针,结构体类型为 TIM_TimeBaseInitTypeDef
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = 5000;//设置自动重载计数周期值
TIM_TimeBaseStructure.TIM_Prescaler =7199;//参数 TIM_Prescaler是用来设置分频系数的
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//设置时钟分频因子
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//参数 TIM_CounterMode 是用来设置计数方式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
设置TIM3_DIER允许更新中断。
因为我们要使用TIM3的更新中断,寄存器的相应位便可使能更新中断。在库函数里面定时器中断使能是通过 TIM_ITConfig 函数来实现的:
void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
第一个参数是选择定时器号,这个容易理解,取值为 TIM1~TIM17。
第二个参数非常关键,是用来指明我们使能的定时器中断的类型,定时器中断的类型有很多种,包括更新中断TIM_IT_Update触发中断TIM_IT_Trigger以及输入捕获中断等等。
第三个参数就很简单了,就是失能还是使能。
TIM3中断优先级设置。
在定时器中断使能之后,因为要产生中断,必不可少的要设置 NVIC 相关寄存器,设置中
断优先级。
使能TIM3 。
光配置好定时器还不行,没有开启定时器,照样不能用。我们在配置完后要开启定时器,通过TIM3_CR1的CEN位来设置。在固件库里面使能定时器的函数是通过TIM_Cmd函数来实现的:
void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)
编写中断服务函数。
读取中断状态寄存器的值判断中断类型的函数
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t)
该函数的作用是,判断定时器TIMx的中断类型TIM_IT是否发生中断if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET){}
固件库中清除中断标志位的函数
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)
该函数的作用是,清除定时器 TIMx 的中断 TIM_IT 标志位。TIM_ClearITPendingBit(TIM3, TIM_IT_Update );
上一篇:STM32USB的枚举过程简介
下一篇:stm32系统滴答定时器使用
史海拾趣
|
input [1:0] in; //定义输入是2位的数据output [1:0] out; //定义输出是2位的数据reg [1:0] out;....out={out,in}; //使用拼接符输入和输出都是2位的,把它们拼接在一起的值赋给输出端,结果是怎样的?比如呢? verilog 采用的截断方式,所有结果 ...… 查看全部问答> |
|
在Keil环境下完成网络和CAN的协议解析和数据转换,实现CAN数据采集自动向网络发送,以及通过网络采集CAN口的数据,类似于串口转网络的功能,并实现PC机配置软件完成各种工作参数的配置和数据监控。… 查看全部问答> |
|
请教:uart、can、Eth等通信接口配置好后,如何通过软件查询其是否工作正常? 本人最近用 LM3S 9B81做一个项目,需要随时应答 上位机发送的 各个端口状态查询信息,请问 假如没有数据收发,我如何反应出 各个通信端口状态是正常的呢?谢谢… 查看全部问答> |
|
现在准备电子设计竞赛,做一个电子假负载的题目,开始直流模式下的恒流恒压横阻模式已完成,但负载不能进交流,求各路大神提供一下能进交流的电子负载原理电路或方案,要测量交流电源内阻的……小弟在此谢过了。。。谢谢!做了差不多3个星期了,没想 ...… 查看全部问答> |
|
最近在弄一块LPC1769的板子,在刚开始建工程的时候遇到点麻烦,试了好久,在网上也找了好多资料也没解决 ,请各位大侠帮忙看看。在添加进一个工程调试时出现了如下问题: 工程代码为: #include \"LPC17xx.h\" #include #include __CRP cons ...… 查看全部问答> |
|
------------------------------------------------------------------------------------ Company: -- Engineer: -- -- Create Date: 10:42:01 04/22/2012 -- Design Name: -- Module Name: top1 - Behaviora ...… 查看全部问答> |




