历史上的今天
今天是:2025年01月04日(星期六)
2019年01月04日 | stm32 定时器 通用定时器
2019-01-04 来源:eefocus
STM32F10xxx
2个基本定时器(TIM6、TIM7)
4个通用定时器(TIM2、 TIM3、 TIM4和TIM5)
2个高级定时器(TIM1、TIM8)
每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作
TIMx主要功能
16位向上、向下、向上/向下自动装载计数器
16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意
数值
4个独立通道:
─ 输入捕获
─ 输出比较
─ PWM生成(边缘或中间对齐模式)
─ 单脉冲模式输出
使用外部信号控制定时器和定时器互连的同步电路
如下事件发生时产生中断/DMA:
─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
─ 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
─ 输入捕获
─ 输出比较
支持针对定位的增量(正交)编码器和霍尔传感器电路
触发输入作为外部时钟或者按周期的电流管理
TIMx配置步骤
1.使能定时器时钟
2.初始化定时器参数,预分频器的值、自动重装载的值等设定
3.设置定时器中断类型
4.初始化NVIC外设,设置定时器中断优先级
5.开启定时器
6.编写定时器处理函数
举例
void TIM4_IRQHandler()
{
if(TIM_GetITStatus(TIM4, TIM_IT_Update) == 1)
{
delay_ms(10);
led1 = ~led1;
}
TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
}
typedef struct
{
uint16_t TIM_Prescaler; //预分频器的值
uint16_t TIM_CounterMode; //计数模式
uint16_t TIM_Period; //自动重装载的值
uint16_t TIM_ClockDivision; //时钟分频
uint8_t TIM_RepetitionCounter; //重复计数器
} TIM_TimeBaseInitTypeDef;
void TIM4_init(u16 per, u16 pre)
{
TIM_TimeBaseInitTypeDef tim = {0};
NVIC_InitTypeDef nvic =
{
TIM4_IRQn,
2,
2,
ENABLE
};
tim.TIM_Prescaler = pre;
tim.TIM_CounterMode = TIM_CounterMode_Up; //计数器向上计数,常用
tim.TIM_Period = per;
tim.TIM_ClockDivision = TIM_CKD_DIV1; //时钟1分频
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //使能定时器时钟
TIM_TimeBaseInit(TIM4, &tim); //初始化定时器参数
TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE); //设置定时器中断类型,发生哪种事件
NVIC_Init(&nvic); //初始化NVIC
TIM_ClearFlag(TIM4, TIM_IT_Update); //清中断
TIM_Cmd(TIM4, ENABLE); //开启定时器
}
定时器定时时间计算
Tout = ((Period)*(Prescaler+1))/Tclk; //mb == us
500000 = (1000 * 36000)/72 //500000um
上一篇:stm32 待机模式
下一篇:stm32 ADXL345传感器
史海拾趣
|
想做一个cab安装包,安装今日插件,按照网上的说明写了个安装程序setupdll.dll, 但是在模拟器上(pocket pc se 2003 Emulator)安装发现setupdll没有被调用(在函数Install_Exit中加了MessageBox,没有弹出,注册表也没写) cab安装包使用vs2005做的 ...… 查看全部问答> |
|
我想使用EINTT4作按键中断输入.定义如下: UINT32 g_EINTIrq = IRQ_EINT4; UINT32 g_EINTSysIntr = SYSINTR_UNDEFINED; PUBLIC DWORD CPK_Init(DWORD dwContext) { &n ...… 查看全部问答> |
|
dshow CreateMediaType FreeMediaType 无法解析的外部符号 我在wince6.0上做dshow开发,已经包含的头文件和库 #include #include #include #include #include &n ...… 查看全部问答> |
|
我之前安装开发环境的时候,发现PB中Device Driver中的SD选项没有,后来把Updates全装上了,就出现了SD选项。 前几天系统崩溃了,重新装上所有东西后发现就是SD选项没有,各位有没有遇到过这种情况啊????急 … 查看全部问答> |
|
MCS-51单片机中,采用12Mhz时钟,定时器T0采用模式1(16位计数器),请问在下面程序中,p1.0的输出频率 ? MOV TMOD,#01H SETB TR0 LOOP:MOV TH0,#0B1H MOV TL0,#0E0H LOOP1:JNB TF0,LOOP1 CLR TR0 CPL P1.0 SJMP LOOP… 查看全部问答> |




