实验内容:设置通用定时器TIM3 定时1S中,产生中断,在中断函数中清中断标志,LED3点亮,LED1熄灭,延时0.5S退出中断。在main()函数while()循环中点亮LED1,熄灭LED3。
实验目的:简单定时器应用。
STM32F103ZE的定时器大大小小的算起来有11个之多,本实验用到的是4个通用定时器T2、T3、T4、T5之中的T3,
其实这几个用法是相同的,均为16位定时器,可选择向上、向下向上向下计数模式,
有16位可编程预分频器,计数器的时钟分频系数为1~65535之间的任意值。
4个独立的通道:输入捕获、输出比较、PWM生成(边缘或中间对齐模式)、单脉冲模式输出。
使用外部信号控制定时期和定时器互联的同步电路。
如下事件发生时产生中断/DMA:更新(计数器溢出、初始化)、触发事件(计数器启动、停止、初始化或由内部外部触发计数)、输入捕获、输出比较。
定时器的配置如下简例:
void Timer_Init(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); //打开定时器时钟
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
//定时器3 设置 3600分频 10KHz 向上计数
TIM_TimeBaseStructure.TIM_Period =10000; // 计时1S 16位的值,最大65536
TIM_TimeBaseStructure.TIM_Prescaler =3599; //3600分频 即为10KHz,16位的值,最大65536
TIM_TimeBaseStructure.TIM_ClockDivision =0x00; //TIM_CKD_DIV1/时钟分频系数,不分频
TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //初始化定时器
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //开定时器中断
TIM_Cmd(TIM3, ENABLE); //使能定时器3
}
此间调试的时候出现了如下的问题:
加上此语句 :TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //开定时器中断
就进入硬件故障的死循环中无法自拔;几经核对代码无误,其它设置项也正常,困顿之际,求得jobs的援助,高人指点:指出错误为未找到入口函数,并热心帮助改之,今才得以实现,再次表示感谢。
我要赚赏金打赏帖 |
|
|---|---|
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
| OK1126B-S开发板的脚本编程及应用设计被打赏¥27元 | |
| 5v升压8.4v两节锂电池充电芯片,针对同步和异步的IC测试被打赏¥35元 | |
| 【S32K3XX】S32DS LPI2C 配置失败问题解决被打赏¥22元 | |
| 【S32K3XX】FLASH 的 DID 保护机制被打赏¥19元 | |
| OK1126B-S开发板串口通信及其使用被打赏¥18元 | |
| 【S32K3XX】多核 CORE ID 获取被打赏¥18元 | |
| OK1126B-S开发板的GPIO资源及其使用被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动屏幕(Arduino IDE环境)被打赏¥23元 | |
我要赚赏金
