第八个实验 PWM控制蜂鸣器
来源:互联网 发布:无法加入网络 编辑:程序博客网 时间:2024/06/04 21:12
配置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;
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);
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);
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_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_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ʹÄÜ
TIM_Cmd(TIM2, DISABLE); //½ûÖ¹TIM2ʹÄÜ
//蜂鸣器响 使能TIM2
TIM_Cmd(TIM2, ENABLE);//ʹÄܶ¨Ê±Æ÷
TIM_Cmd(TIM2, ENABLE);//ʹÄܶ¨Ê±Æ÷
//蜂鸣器不响
TIM_Cmd(TIM2, DISABLE); //½ûÖ¹TIM2ʹÄÜ
TIM_Cmd(TIM2, DISABLE); //½ûÖ¹TIM2ʹÄÜ
//蜂鸣器响
TIM_Cmd(TIM2, ENABLE);//ʹÄܶ¨Ê±Æ÷
TIM_Cmd(TIM2, ENABLE);//ʹÄܶ¨Ê±Æ÷
蜂鸣器不响
TIM_Cmd(TIM2, DISABLE); //½ûÖ¹TIM2ʹÄÜ
}
TIM_Cmd(TIM2, DISABLE); //½ûÖ¹TIM2ʹÄÜ
}
阅读全文
0 0
- 第八个实验 PWM控制蜂鸣器
- pwm控制蜂鸣器实验
- 实验7 PWM 控制蜂鸣器实验
- pwm控制蜂鸣器实验(转)
- PWM控制蜂鸣器驱动
- 蜂鸣器控制实验
- 蜂鸣器 PWM
- TQ2440使用定时器产生PWM,控制蜂鸣器发声
- S3C2440 测试程序(一)PWM控制蜂鸣器Beep(2000, 100)
- PWM控制蜂鸣器驱动详细概念及代码
- PWM (2541)控制无源蜂鸣器发出不同的声音
- pwm控制蜂鸣器驱动移植及初步认识Kconfig
- 2.S5PV210中PWM定时器2控制蜂鸣器
- linux pwm实现蜂鸣器
- mini2440 PWM驱动蜂鸣器
- ok6410 PWM 驱动蜂鸣器
- 蜂鸣器实验
- 蜂鸣器实验
- Dubbo+Zookeeper+SpringMVC:基于注解的配置方法
- RetroFactory
- 学Java就来吧
- EasyDarwin 中使用epoll网络模型替换原来的select模型
- hihoCoder
- 第八个实验 PWM控制蜂鸣器
- [BZOJ1854][Scoi2010]游戏
- 渠道分销系统开发管理
- php+mysql+jquery创建简单网页聊天室
- Java核心技术-异常处理
- java高级(一)
- 人工智能从入门到精通(3)
- org.mybatis.spring.MyBatisSystemException
- JTabel 中监听某个单元格的值确实改变了