STM32+按键调控PWM输出+串口输出占空比_第1页
STM32+按键调控PWM输出+串口输出占空比_第2页
STM32+按键调控PWM输出+串口输出占空比_第3页
STM32+按键调控PWM输出+串口输出占空比_第4页
STM32+按键调控PWM输出+串口输出占空比_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

*FunctionName:GPIO_Configuration*设置PD3,PD4,PD5,PD6为键盘输入*设置PB0,5,8,9;PC5,7;PD7;PA8为输出LED灯voidGPIO_Configuration(void)

{GPIO_InitTypeDefGPIO_InitStructure;/*允许总线CLOCK,在使用GPIO之前必须允许相应端的时钟.从STM32的设计角度上说,没被允许的端将不接入时钟,也就不会耗能,这是STM32节能的一种技巧,*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);/*PC8按键输入*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉输入

GPIO_Init(GPIOC,&GPIO_InitStructure);/*PC9按键输入*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉输入

GPIO_Init(GPIOC,&GPIO_InitStructure);}hal.h#ifndefHAL_H#defineHAL_H〃硬件初始化externvoid ChipHaIInit(Void);externvoidChipOutHalInit(Void);〃输入宏定义#defineGET_LEFT() (GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8))#defineGET_RIGHT() (GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9))externvoidUSARTIPutc(u8c);externvoidUSART_Configuration(Void)

externvoidUSARTI_Puts(Char*str);#endifTIM.cvoidTim1_Configuration(Void){TIMJimeBaseInitTypeDefTIMJimeBaseStructure;TIM_OCInitTypeDefTIM_OCInitStructure;GPIO_InitTypeDefGPIO_InitStructure;/*PA8设置为功能脚(PWM)*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);TIM_DeInit(TIM1);/*TIM1时钟配置*/TIMJrimeBaSeStrUCtUre.TIM_Prescaler=72; 〃预分频(时钟分频)72M∕72=1000KTIM_TimeBaseStructure.TIM_CounterMode=TIMJCoUnterMode_Up; 〃向上计数TIMJrimeBaSeStrUCtUre.TIM_Period=2000; 〃装载值1000k∕2000=500hzTIMJTimeBaSeStrUCtUre.TIMJZlockDivision=TIM_CKDJDIV1;TIMJTimeBaSeStrUCtUre.TIMjRepetitionCounter=0x0;TIMJTimeBaSeInit(TIMI,&TIM_TimeBaseStructure);∕*Channel1ConfigurationinPWMmode*/TIMJOCInitStrUCtUre.TIMJOCMode=TIMJOCModeJPWM2; //PWM模式2TIMJOCInitStrUCtUre.TIMJOUtpUtState=TIMJOUtpUtStateJEnable; 〃正向通道有效TIMJOCInitStrUCtUre.TIM—OutputNState=TIMJOUtpUtNStateJDiSable;//反向通道无效TIMJOCInitStrUCtUre.TIM—Pulse=300; 〃占空时间TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low; 〃输出极性TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCNPolarity_High; 〃互补端的极性TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCIdleState_Reset;TIM_OC1Init(TIMI,&TIM_OCInitStructure); 〃通道1/**TIM1counterenable*/

TIM_CInd(TIM1,ENABLE);/*TIM1MainOutputEnable*/

TIM_CtrlPWMOutputs(TIM1,ENABLE);}〃设置捕获寄存器1voidSetTIPWm1(u16pulse)

{TIM1->CCR1=pulse;}main.C**实验名称:PWM**功能:是PA8产生PWM输出,按键调节占空比#defineSIZE0u8voidDelay(u16n);voidd_2_char(u32x)buffer[SIZE+0]=table[x%10000000000/100000];buffer[SIZE+1]=tabSe[x%1000000000/100000];buffer[SIZE+2]=table[x%100000000∕100000];buffer[SIZE+3]=table[x%10000000∕10000];buffer[SIZE+4]=table[x%1000000∕10000];buffer[SIZE+5]=table[x%100000∕10000];buffer[SIZE+6]=table[x%10000∕1000];buffer[SIZE+7]=table[x%1000∕100];buffer[SIZE+8]=table[x%100∕10];buffer[SIZE+9]=table[x%10];}〃延迟函数VoidDelay(u16speed){u16i;While(Speed!=0){speed--;for(i=0;i<400;i++);}}externvoidSetTIPWm1(u16pulse);intmain(void){u16PUlSe=300;ChipHalInit(); 〃片内硬件初始化ChipOutHalInit(); 〃片外硬件初始化for(;;){if(GET_LEFT()==0){While(GET_LEFT()==0);if(pulse<=2000){pulse+=30;//SetTIPWm1(pul

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论