概述
项目功能:使蜂鸣器每2秒交替响;
一、基本流程
二、相关库函数
三、电路图
四、代码实现
bluzze.c
#include "bluzze.h"
#include "delay.h"
void bluzze_init(void)
{
//定义GPIO_A初始化的结构体
GPIO_InitTypeDef GPIO_InitStruct_A;
//打开PA管脚的时钟
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
//配置PA的参数
GPIO_InitStruct_A.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct_A.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
GPIO_InitStruct_A.GPIO_Speed=GPIO_Speed_50MHz;
//初始化PA管脚
GPIO_Init(GPIOA, &GPIO_InitStruct_A);
//最开始将蜂鸣器和风扇的电机关闭(防止其属于浮空转态不稳定)
GPIO_SetBits(GPIOA, GPIO_Pin_0);
GPIO_SetBits(GPIOA, GPIO_Pin_1);
}
void time2_init(void)
{
//定义TIME_2初始化的结构体
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct_TIME2;
//打开定时器2的时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
//配置TIME_2的参数
TIM_TimeBaseInitStruct_TIME2.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInitStruct_TIME2.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInitStruct_TIME2.TIM_Period=7199;
TIM_TimeBaseInitStruct_TIME2.TIM_Prescaler=19999;
//初始化TIME_2
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct_TIME2);
//定义NVIC初始化的结构体
NVIC_InitTypeDef NVIC_InitStruct;
//中断分组
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
//配置NVIC的参数
NVIC_InitStruct.NVIC_IRQChannel=TIM2_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=0;
//中断NVIC的初始化
NVIC_Init(&NVIC_InitStruct);
//清除定时器TIME_2更新中断标志
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
//开启定时器TIME_2的中断
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
//使能定时器TIME_2
TIM_Cmd(TIM2,ENABLE );
}
int i=0;
void TIM2_IRQHandler() //TIM2中断
{
if (TIM_GetITStatus(TIM2, TIM_IT_Update))//检查TIM2更新中断发生与否
{
if(i==0)
{
GPIO_ResetBits(GPIOA, GPIO_Pin_0);//蜂鸣器响
i=1;//参数改变
}
else if(i==1)
{
GPIO_SetBits(GPIOA, GPIO_Pin_0);//蜂鸣器不响
i=0;//参数改变
}
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);//清除TIM2更新中断标志
}
}
.bluzze.h
#ifndef __BLUZZE_H
#define __BLUZZE_H
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
void bluzze_init(void);
void time2_init(void);
#endif
main.c
#include "bluzze.h"
#include "time.h"
#include "stdio.h"
#include "delay.h"
#include "stm32f10x.h"
#include "stm32f10x_tim.h"
u8 UART3_data,UART1_data;
u8 UART3_rcv[20],UART3_rcv_count;
u8 UART1_rcv[50],UART1_rcv_count,Uart1_finish;
int main(void)
{
bluzze_init();//蜂鸣器初始函数
time2_init();//定时器2初始函数
while(1)
{
}
}
最后
以上就是想人陪睫毛膏为你收集整理的项目二:运用定时器中断实现蜂鸣器定时响的全部内容,希望文章能够帮你解决项目二:运用定时器中断实现蜂鸣器定时响所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复