找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4784|回复: 0
收起左侧

STM32多路AD采样按键可调pwm(频率,占空比)源码

[复制链接]
ID:372853 发表于 2018-7-16 21:03 | 显示全部楼层 |阅读模式
按键可调占空比
输出端PC6

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"
  7. #include "pwm.h"
  8. #include "exti.h"

  9. extern void TIM3_PWM_Init(u16 arr,u16 psc);
  10. extern void TIM4_PWMINPUT_INIT(u16 arr,u16 psc);
  11. extern void TIM5_PWMINPUT_INIT(u16 arr,u16 psc);

  12. extern u16 period;
  13. extern u16 duty ;
  14. extern u8 CollectFlag ;
  15. extern u32 b;
  16. extern u16 c;
  17. extern u16 d;
  18. extern u16 period1;
  19. extern u16 duty1 ;
  20. extern u8 CollectFlag1 ;
  21.        
  22. int main(void)
  23. {         
  24.         u8 x=0;
  25.          u8 y=0;
  26.          d=0;
  27. //        u8 lcd_id[12];                        //存放LCD ID字符串
  28.         delay_init();                     //延时函数初始化          
  29.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  30.         uart_init(115200);                 //串口初始化为115200
  31.         LED_Init();                             //LED端口初始化
  32.         LCD_Init();
  33.         EXTIX_Init();                         //外部中断初始化
  34. //        TIM3_PWM_Init(1000-1,72-1);   //1KHZ周期
  35. //        TIM_SetCompare1(TIM3,200);                //设置占空比
  36. //        TIM_SetCompare2(TIM3,400);                //设置占空比
  37. //        TIM_SetCompare3(TIM3,600);                //设置占空比
  38. //        TIM_SetCompare4(TIM3,800);                //设置占空比
  39.         TIM4_PWMINPUT_INIT(0xffff,7);   //pwm输入初始化以1M的频率捕捉
  40.          TIM5_PWMINPUT_INIT(0xffff,71);   //pwm输入初始化以1M的频率捕捉
  41.         POINT_COLOR=RED;
  42.         POINT_COLOR=RED;
  43.          LCD_Clear(WHITE);
  44.                         LED0=0;                        
  45.           while(1)
  46.         {                 

  47.                 POINT_COLOR=RED;          
  48.                 LCD_ShowString(30,40,210,24,24,"WarShip STM32 ^_^");
  49.                          if(!CollectFlag)
  50.                         {
  51.                                 printf("duty          = %d%% \r\n",duty*100/period);                                //打印占空比
  52.                                 printf("cycle         = %dKHz\r\n",1000/period);//打印周期另一种叫法
  53.                                 printf("period  = %dus\r\n",period);    //打印周期
  54.                                 LCD_ShowString(30,170,210,12,12,"A duty=");
  55.                                 LCD_ShowString(30,190,210,12,12,"A period=");
  56.                                 LCD_ShowNum(90,170,duty*100/period,12,12);
  57.                                 LCD_ShowNum(90,190,1000/period,12,12);
  58.                                 LCD_ShowString(170,190,210,12,12,"KHZ");
  59.                                 CollectFlag = 1;
  60.                         }       
  61.                         if(!CollectFlag1)
  62.                         {
  63.                                 printf("duty          = %d%% \r\n",duty*100/period);                                //打印占空比
  64.                                 printf("cycle         = %dKHz\r\n",1000/period);//打印周期另一种叫法
  65.                                 printf("period  = %dus\r\n",period);    //打印周期
  66.                                 LCD_ShowString(30,210,210,12,12,"B duty=");
  67.                                 LCD_ShowString(30,230,210,12,12,"B period=");
  68.                                 LCD_ShowNum(90,210,duty1*100/period1,12,12);
  69.                                         LCD_ShowNum(90,230,72000000/(period1*c),12,12);
  70.                                 LCD_ShowString(170,230,210,12,12,"KHZ");
  71.                                 CollectFlag1 = 1;
  72.                                 x=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1);
  73.                                 y=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7);
  74.                                
  75.                                 LCD_ShowNum(90,270,1000000,12,12);
  76.                                 LCD_ShowNum(90,290,c,12,12);
  77.                                
  78.                
  79.                         }                            
  80.                 delay_ms(10);       

  81.         }
  82. }
复制代码

所有资料51hei提供下载:
按键可调pwm(频率,占空比).rar (366.37 KB, 下载次数: 98)


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表