你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM8S TIM1之PWM呼吸灯经验分享

[复制链接]
攻城狮Melo 发布时间:2023-4-3 18:45
STM8S TIM1寄存器 PWM呼吸灯
原理图:

f9e803c1c9bf4349b8107b1936141b39.png

1.TIM1 初始化
  1. void  TIM1_Init(void)
  2. {
  3.     TIM1_PSCRH = 0;
  4.     TIM1_PSCRL = 15;          //(15+1)分频为1M
  5.     TIM1_ARRH = 0x03;
  6.     TIM1_ARRL = 0xE8;        //每1000us中断一次
  7.    
  8.     TIM1_CCMR2_OC2M = 6;      //PWM2模式1
  9.     TIM1_CCER1_CC2E = 1;      //CC2引脚使能
  10.    
  11.     TIM1_CCMR3_OC3M = 6;      //PWM3模式1
  12.     TIM1_CCER2_CC3E = 1;      //CC3引脚使能
  13.    
  14.     TIM1_CCR2H = 0X00;        //DUTY            
  15.     TIM1_CCR2L = 0x00;            
  16.    
  17.     TIM1_CCR3H = 0X00;        //DUTY            
  18.     TIM1_CCR3L = 0x00;      
  19.     TIM1_BKR |= 0x80;         //设置刹车寄存器
  20.     TIM1_IER = 0x01;         //允许更新中断
  21.     TIM1_CR1 = 0x01;         //计数器使能,开始计数
  22. }
复制代码

2.设置占空比
  1. void pwm1_duty(u16 duty)
  2. {
  3.   TIM1_CCR2H=duty>>8;
  4.   TIM1_CCR2L=(u8)(duty);
  5.   TIM1_CCR3H=duty>>8;
  6.   TIM1_CCR3L=(u8)(duty);
  7. }
复制代码

3.呼吸
  1.   while(1)
  2.   {
  3.     if(key_value>=1000) dir=0;
  4.     if(key_value<=1) dir=1;
  5.     if(dir) key_value++;
  6.     else key_value--;
  7.     pwm1_duty(key_value);
  8.     delay_ms(3);
  9.   }
复制代码

4.实验现象:

0ad3ebe5e041439295fe7cc643fbbcd8.gif

————————————————
版权声明:xiaoqi976633690

收藏 评论0 发布时间:2023-4-3 18:45

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版