资源描述:
《STM32+按键调控PWM输出+串口输出占空比.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include"STM32Lib\stm32f10x.h"#include"hal.h"/********************************************************************************FunctionName :GPIO_Configuration*设置PD3,PD4,PD5,PD6为键盘输入*设置PB0,5,8,9;PC5,7;PD7;PA8为输出LED灯***********************************************
2、********************************/voidGPIO_Configuration(void){ GPIO_InitTypeDefGPIO_InitStructure; /*允许总线CLOCK,在使用GPIO之前必须允许相应端的时钟. 从STM32的设计角度上说,没被允许的端将不接入时钟,也就不会耗能, 这是STM32节能的一种技巧,*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(
3、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_Pi
4、n= GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //上拉输入 GPIO_Init(GPIOC,&GPIO_InitStructure);}hal.h#ifndefHAL_H#defineHAL_H//硬件初始化externvoid ChipHalInit(void);externvoid ChipOutHalInit(void);//输入宏定义#defineGET_LEFT() (GPIO_ReadInputDataBit(GPIOC,GPIO_P
5、in_8))#defineGET_RIGHT() (GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9))externvoidUSART1_Putc(u8c);externvoidUSART_Configuration(void);externvoidUSART1_Puts(char*str);#endifTIM.c#include"STM32Lib\stm32f10x.h"voidTim1_Configuration(void){ TIM_TimeBaseInitTypeDef TIM_T
6、imeBaseStructure; TIM_OCInitTypeDef TIM_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,&
7、GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE); TIM_DeInit(TIM1);/*TIM1时钟配置*/ TIM_TimeBaseStructure.TIM_Prescaler=72; //预分频(时钟分频)72M/72=1000K TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数 TIM_TimeBaseStructure.TI
8、M_Period=2000; //装载值1000k/2000=500hz TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_RepetitionCounter=0x0; TIM_TimeBaseInit(TIM