按键可调占空比
输出端PC6
单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "lcd.h"
- #include "usart.h"
- #include "pwm.h"
- #include "exti.h"
- extern void TIM3_PWM_Init(u16 arr,u16 psc);
- extern void TIM4_PWMINPUT_INIT(u16 arr,u16 psc);
- extern void TIM5_PWMINPUT_INIT(u16 arr,u16 psc);
- extern u16 period;
- extern u16 duty ;
- extern u8 CollectFlag ;
- extern u32 b;
- extern u16 c;
- extern u16 d;
- extern u16 period1;
- extern u16 duty1 ;
- extern u8 CollectFlag1 ;
-
- int main(void)
- {
- u8 x=0;
- u8 y=0;
- d=0;
- // u8 lcd_id[12]; //存放LCD ID字符串
- delay_init(); //延时函数初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
- uart_init(115200); //串口初始化为115200
- LED_Init(); //LED端口初始化
- LCD_Init();
- EXTIX_Init(); //外部中断初始化
- // TIM3_PWM_Init(1000-1,72-1); //1KHZ周期
- // TIM_SetCompare1(TIM3,200); //设置占空比
- // TIM_SetCompare2(TIM3,400); //设置占空比
- // TIM_SetCompare3(TIM3,600); //设置占空比
- // TIM_SetCompare4(TIM3,800); //设置占空比
- TIM4_PWMINPUT_INIT(0xffff,7); //pwm输入初始化以1M的频率捕捉
- TIM5_PWMINPUT_INIT(0xffff,71); //pwm输入初始化以1M的频率捕捉
- POINT_COLOR=RED;
- POINT_COLOR=RED;
- LCD_Clear(WHITE);
- LED0=0;
- while(1)
- {
- POINT_COLOR=RED;
- LCD_ShowString(30,40,210,24,24,"WarShip STM32 ^_^");
- if(!CollectFlag)
- {
- printf("duty = %d%% \r\n",duty*100/period); //打印占空比
- printf("cycle = %dKHz\r\n",1000/period);//打印周期另一种叫法
- printf("period = %dus\r\n",period); //打印周期
- LCD_ShowString(30,170,210,12,12,"A duty=");
- LCD_ShowString(30,190,210,12,12,"A period=");
- LCD_ShowNum(90,170,duty*100/period,12,12);
- LCD_ShowNum(90,190,1000/period,12,12);
- LCD_ShowString(170,190,210,12,12,"KHZ");
- CollectFlag = 1;
- }
- if(!CollectFlag1)
- {
- printf("duty = %d%% \r\n",duty*100/period); //打印占空比
- printf("cycle = %dKHz\r\n",1000/period);//打印周期另一种叫法
- printf("period = %dus\r\n",period); //打印周期
- LCD_ShowString(30,210,210,12,12,"B duty=");
- LCD_ShowString(30,230,210,12,12,"B period=");
- LCD_ShowNum(90,210,duty1*100/period1,12,12);
- LCD_ShowNum(90,230,72000000/(period1*c),12,12);
- LCD_ShowString(170,230,210,12,12,"KHZ");
- CollectFlag1 = 1;
- x=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1);
- y=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7);
-
- LCD_ShowNum(90,270,1000000,12,12);
- LCD_ShowNum(90,290,c,12,12);
-
-
- }
- delay_ms(10);
- }
- }
复制代码
所有资料51hei提供下载:
按键可调pwm(频率,占空比).rar
(366.37 KB, 下载次数: 98)
|