[置顶] ARM开发(10)基于STM32的通用定时器中断控制蜂鸣器响
2017-08-11 19:02
435 查看
基于STM32的通用定时器中断控制蜂鸣器响
一 通用定时器原理:
1.1 本实验实现通用定时器中断控制蜂鸣器1s鸣叫一次。 1.2 实验思路:理解中断控制寄存器,DMA/中断使能寄存器,预分频寄存器,初始化定时器参数,中断优先级设置,编写中断服务函数,中断服务函数里面我们实现蜂鸣器1s鸣叫一次 1.3 开发环境 : MDK5 库函数版本开发 JLINK仿真
二 实验步骤:
2.1 timer.h代码:
#ifndef __TIMER_H #define __TIMER_H #include "sys.h" void TIM3_Int_Init(u16 arr,u16 psc); #endif
2.2 timer.c代码(通用定时器参数配置和中断服务函数编写):
#include "timer.h" #include "beep.h" //通用定时器3中断初始化 //这里时钟选择为APB1的2倍,而APB1为36M //arr:自动重装值。 //psc:时钟预分频数 //这里使用的是定时器3! void TIM3_Int_Init(u16 arr,u16 psc) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能 //定时器TIM3初始化 TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位 TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断 //中断优先级NVIC设置 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能 NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器 TIM_Cmd(TIM3, ENABLE); //使能TIMx } //定时器3中断服务程序 void TIM3_IRQHandler(void) //TIM3中断 { if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否 { TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志 BEEP =!BEEP ; } }
2.2 main.c代码(具体实现通用定时器中断实现蜂鸣器鸣叫):
int main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 设置NVIC中断分组2; BEEP_Init(); TIM3_Int_Init(4999,7199);//10Khz的计数频率,计数到5000为0.5s while(1) { } }
三 接线测试:
3.1 测试效果好,实现了通用定时器中断服务蜂鸣器鸣叫。
相关文章推荐
- [置顶] ARM开发(6) 基于STM32的矩阵键盘按键触发外部中断引起蜂鸣器鸣叫
- [置顶] ARM开发(4)基于STM32的矩阵键盘按键控制TM1629A LED显示
- [置顶] ARM开发(2)基于STM32的蜂鸣器
- [置顶] ARM开发(3)基于STM32的矩阵键盘控制蜂鸣器
- [置顶] ARM开发(5)基于STM32的UART串口通信实验
- [置顶] ARM开发(1) 基于stm32的led跑马灯
- [置顶] ARM开发(9)基于STM32的简单四则运算计算器
- [置顶] ARM开发(7)基于STM32的独立看门狗
- [置顶] ARM开发(8)基于STM32的窗口看门狗
- 同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800,1K的方波
- 基于ARM的网络视频监控开发+网页按钮控制摄像头方位 ---fwqlzz love is for ever
- 基于ARM-contexA9-蜂鸣器pwm驱动开发
- ARM裸机程序开发10(LED控制程序)
- stm32通用定时器进入不了中断
- 【嵌入式】——arm裸机开发 step by step 之 按键控制 LED 和 蜂鸣器
- stm32通用定时器中断问题
- 基于ARM的网络视频监控开发+网页按钮控制摄像头方位
- Wins【7/10】环境下安装基于Eclipse的STM32交叉编译开发调试环境
- 关于STM32通用定时器更新事件中断
- 基于ARM的网络视频监控开发+网页按钮控制摄像头方位