第八个实验 PWM控制蜂鸣器
2017-11-22 21:08
357 查看
配置PWM时应遵循以下步骤
1)将相应的GPIO管脚设为PWM模式
2)设置PWM模块时钟分频数
3)给PWM提供时钟
4)调用PWMGenConfigure配置PWM
5)调用PWMGenPeriodSet和PWMPulseWidthSet设置周期和脉宽
6)调用PWMOutputState使能PWM输出管脚
7)调用PWMGenEnable使能PWM模块
#include "stm32f10x.h"
int main()
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
//使能TIM2时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
//使能GPIOA和复用功能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
设置GPIO模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //TIM2¶þͨµÀPWM²¨ÐÎÊä³ö¶Ë¿ÚPA1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//¸´ÓÃÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure);
//设置分频器基本单位结构体
TIM_TimeBaseStructure.TIM_Period = 3600-1;//×Ô¶¯ÖØ×°ÔØÖµ£¬È¡Öµ±ØÐëÔÚ0x0000~0xFFFFÖ®¼ä
TIM_TimeBaseStructure.TIM_Prescaler =10-1;//Ô¤·ÖƵֵ£¬+1Ϊ·ÖƵϵÊý£¬È¡Öµ±ØÐëÔÚ0x0000~0xFFFFÖ®¼ä
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //ʱÖÓ·Ö¸î
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //ÏòÉϼÆÊýģʽ
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
//设置基本单位结构体
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //TIMÂö³å¿í¶Èµ÷ÖÆģʽ1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //±È½ÏÊä³öʹÄÜ
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //Êä³ö¼«ÐÔ:
TIM_OCInitStructure.TIM_Pulse=900;
TIM_OC2Init(TIM2, &TIM_OCInitStructure); //¸ù¾ÝTIM_OCInitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèTIMx
TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); //ʹÄÜTIMxÔÚCCR2ÉϵÄԤװÔؼĴæÆ÷
//使能TIx在ARR上的预装载寄存器
TIM_ARRPreloadConfig(TIM2, ENABLE);
//蜂鸣器不响
TIM_Cmd(TIM2, DISABLE); //½ûÖ¹TIM2ʹÄÜ
//蜂鸣器响 使能TIM2
TIM_Cmd(TIM2, ENABLE);//ʹÄܶ¨Ê±Æ÷
//蜂鸣器不响
TIM_Cmd(TIM2, DISABLE); //½ûÖ¹TIM2ʹÄÜ
//蜂鸣器响
TIM_Cmd(TIM2, ENABLE);//ʹÄܶ¨Ê±Æ÷
蜂鸣器不响
TIM_Cmd(TIM2, DISABLE); //½ûÖ¹TIM2ʹÄÜ
}
1)将相应的GPIO管脚设为PWM模式
2)设置PWM模块时钟分频数
3)给PWM提供时钟
4)调用PWMGenConfigure配置PWM
5)调用PWMGenPeriodSet和PWMPulseWidthSet设置周期和脉宽
6)调用PWMOutputState使能PWM输出管脚
7)调用PWMGenEnable使能PWM模块
#include "stm32f10x.h"
int main()
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
//使能TIM2时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
//使能GPIOA和复用功能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
设置GPIO模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //TIM2¶þͨµÀPWM²¨ÐÎÊä³ö¶Ë¿ÚPA1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//¸´ÓÃÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure);
//设置分频器基本单位结构体
TIM_TimeBaseStructure.TIM_Period = 3600-1;//×Ô¶¯ÖØ×°ÔØÖµ£¬È¡Öµ±ØÐëÔÚ0x0000~0xFFFFÖ®¼ä
TIM_TimeBaseStructure.TIM_Prescaler =10-1;//Ô¤·ÖƵֵ£¬+1Ϊ·ÖƵϵÊý£¬È¡Öµ±ØÐëÔÚ0x0000~0xFFFFÖ®¼ä
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //ʱÖÓ·Ö¸î
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //ÏòÉϼÆÊýģʽ
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
//设置基本单位结构体
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //TIMÂö³å¿í¶Èµ÷ÖÆģʽ1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //±È½ÏÊä³öʹÄÜ
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //Êä³ö¼«ÐÔ:
TIM_OCInitStructure.TIM_Pulse=900;
TIM_OC2Init(TIM2, &TIM_OCInitStructure); //¸ù¾ÝTIM_OCInitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèTIMx
TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); //ʹÄÜTIMxÔÚCCR2ÉϵÄԤװÔؼĴæÆ÷
//使能TIx在ARR上的预装载寄存器
TIM_ARRPreloadConfig(TIM2, ENABLE);
//蜂鸣器不响
TIM_Cmd(TIM2, DISABLE); //½ûÖ¹TIM2ʹÄÜ
//蜂鸣器响 使能TIM2
TIM_Cmd(TIM2, ENABLE);//ʹÄܶ¨Ê±Æ÷
//蜂鸣器不响
TIM_Cmd(TIM2, DISABLE); //½ûÖ¹TIM2ʹÄÜ
//蜂鸣器响
TIM_Cmd(TIM2, ENABLE);//ʹÄܶ¨Ê±Æ÷
蜂鸣器不响
TIM_Cmd(TIM2, DISABLE); //½ûÖ¹TIM2ʹÄÜ
}
相关文章推荐
- pwm控制蜂鸣器实验
- pwm控制蜂鸣器实验(转)
- PWM控制蜂鸣器实验(附源代码)
- 实验7 PWM 控制蜂鸣器实验
- 蜂鸣器控制实验
- linux驱动开发之路(三)——嵌入式 Linux 的蜂鸣器控制实验(misc设备)
- PWM控制蜂鸣器驱动
- S3C2440 测试程序(一)PWM控制蜂鸣器Beep(2000, 100)
- 基于Wolf32F031 自由评估板的Buzzer(PWM控制方式)实验硬件原理及软件API使用方法(适用于STM32F030/031)
- TQ2440使用定时器产生PWM,控制蜂鸣器发声
- 基于Wolf32F031 自由评估板的Buzzer(PWM控制方式)实验硬件原理及软件API使用方法(适用于STM32F030/031)
- TQ2440使用定时器产生PWM,控制蜂鸣器发声
- Linux-2.6.32.2内核在mini2440上的移植(十七)---移植PWM控制蜂鸣器驱动
- Linux-2.6.32.2内核在mini2440上的移植(十七)---移植PWM控制蜂鸣器驱动
- 【引用】Linux-2.6.32.2内核在mini2440上的移植(十七)---移植PWM控制蜂鸣器驱动
- 2.S5PV210中PWM定时器2控制蜂鸣器
- ZigBee基础实验(十一)--PWM来控制LED亮度
- .Linux-2.6.32.2内核在mini2440上的移植(十七)---移植PWM控制蜂鸣器驱动
- PWM控制蜂鸣器驱动详细概念及代码
- Linux-2.6.32.2内核在mini2440上的移植(十七)---移植PWM控制蜂鸣器驱动 .