【M61学习笔记第三节】PWM呼吸灯

[复制链接]
查看531 | 回复2 | 2023-11-20 21:37:05 | 显示全部楼层 |阅读模式
    先看实验现象
89bb13e993c5b2e48e9aa7c9e6350c18.gif

    参照泽哥的代码,将GPIO_0实现的呼吸灯移植到LED模块(当然也试过GPIO_0处的,明明代码基本都是全部抄过去的,但就是不亮,后来才发现没有共地)

  1. #include "bflb_mtimer.h"
  2. #include "bflb_pwm_v2.h"
  3. #include "bflb_clock.h"
  4. #include "bflb_gpio.h"
  5. #include "board.h"

  6. struct bflb_device_s *pwm;
  7. struct bflb_device_s *gpio;

  8. int main(void)
  9. {
  10.     board_init();
  11.    
  12.     gpio = bflb_device_get_by_name("gpio");
  13.     pwm = bflb_device_get_by_name("pwm_v2_0");

  14.     bflb_gpio_init(gpio, GPIO_PIN_12, GPIO_FUNC_PWM0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_3);
  15.     bflb_gpio_init(gpio, GPIO_PIN_14, GPIO_FUNC_PWM0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_3);
  16.     bflb_gpio_init(gpio, GPIO_PIN_15, GPIO_FUNC_PWM0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_3);
  17.    

  18.     struct bflb_pwm_v2_config_s cfg = {
  19.         .clk_source = BFLB_SYSTEM_XCLK,
  20.         .clk_div = 40,
  21.         .period = 1000,
  22.     };

  23.     bflb_pwm_v2_init(pwm, &cfg);
  24.     bflb_pwm_v2_start(pwm);

  25.     uint8_t i;

  26.     while(1)
  27.     {
  28.         bflb_pwm_v2_channel_positive_start(pwm, PWM_CH0);    //12管脚对应着CH0通道()
  29.         for(i=1;i<100;i++)
  30.         {
  31.             bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH0, i, 100);

  32.             arch_delay_ms(20);
  33.         }
  34.         for(i=1;i<100;i++)
  35.         {
  36.             bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH0, 100 - i, 100);

  37.             arch_delay_ms(20);
  38.         }
  39.         bflb_pwm_v2_channel_positive_stop(pwm, PWM_CH0);

  40.         bflb_pwm_v2_channel_positive_start(pwm, PWM_CH2);    //14管脚对应着CH2管道
  41.         for(i=1;i<100;i++)
  42.         {
  43.             bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH2, i, 100);

  44.             arch_delay_ms(20);
  45.         }
  46.         for(i=1;i<100;i++)
  47.         {
  48.             bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH2, 100 - i, 100);

  49.             arch_delay_ms(20);
  50.         }
  51.         bflb_pwm_v2_channel_positive_stop(pwm, PWM_CH2);

  52.         bflb_pwm_v2_channel_positive_start(pwm, PWM_CH3);    //15管脚对应着CH3管道
  53.         for(i=1;i<100;i++)
  54.         {
  55.             bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH3, i, 100);

  56.             arch_delay_ms(20);
  57.         }
  58.         for(i=1;i<100;i++)
  59.         {
  60.             bflb_pwm_v2_channel_set_threshold(pwm, PWM_CH3, 100 - i, 100);

  61.             arch_delay_ms(20);
  62.         }
  63.         bflb_pwm_v2_channel_positive_stop(pwm, PWM_CH3);
  64.     }  
  65. }
复制代码
    以上就是本节所有内容,附加一份数据手册
BL616_BL618_数据手册.pdf (1.17 MB, 下载次数: 4)
屏幕截图 2023-11-19 203016.png
回复

使用道具 举报

dimwalker | 2023-11-29 09:20:06 | 显示全部楼层
打卡
回复

使用道具 举报

hrqwe | 2023-12-24 00:19:57 | 显示全部楼层
学习了,效果很好。
日拱一卒,功不唐捐
回复 支持 反对

使用道具 举报

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

本版积分规则