[AIROC™ 蓝牙] 【英飞凌CYW20829测评】-04-RGBLED灯点亮红橙黄绿青蓝紫白

[复制链接]
 楼主| zhoushangshi 发表于 2024-6-24 10:17 | 显示全部楼层 |阅读模式
<
本帖最后由 zhoushangshi 于 2024-6-24 10:25 编辑

#申请原创#                       【英飞凌CYW20829测评】-04-RGBLED灯点亮红橙黄绿青蓝紫白

      这一帖展示用PWM方式点亮RGBLED灯,依次点亮红色、橙色、黄色、绿色、青色、蓝色、紫色、白色.

建立一个工程,点击File-New-ModusToolbox Application

索引20829,出来列表,选择开发板CYW920829M2EVK-02


选择Peripherals-HAL PWM Square Wave,工程名字改为RGB


创建完后,MAIN.C文件上可以看到:


必要的初始化:
  1. result = cybsp_init();

串口初始化和打印字符串:
  1. /* Initialize the retarget-io to use the debug UART port */

  2. result = cy_retarget_io_init(CYBSP_DEBUG_UART_TX, CYBSP_DEBUG_UART_RX,

  3. CY_RETARGET_IO_BAUDRATE);

  4. handle_error(result);

  5. /* \x1b[2J\x1b[;H - ANSI ESC sequence for clear screen */

  6. printf("\x1b[2J\x1b[;H");

  7. printf("****************** "

  8. "HAL: PWM square wave "

  9. "****************** \r\n\n");

用户灯1设置成PWM模式,2HZ 50%占空比:
  1. result = cyhal_pwm_init(&pwm_led_control, CYBSP_USER_LED, NULL);

设置PWM频率、占空比:
  1. result = cyhal_pwm_set_duty_cycle(&pwm_led_control, PWM_DUTY_CYCLE,

  2. PWM_FREQUENCY);

开始输出PWM:
  1. result = cyhal_pwm_start(&pwm_led_control);

点击烧写:


烧写完看到用户灯1闪亮:


加上自己的想法,一上电用户灯1闪3秒:
  1. char CYCLE_VAULE=99;
  2. char updown_flag=1;
  3. char timenums=0;
  4. for (;;)
  5. {
  6.         /* Set the PWM output frequency and duty cycle */
  7.         result = cyhal_pwm_set_duty_cycle(&pwm_led_control, CYCLE_VAULE,
  8.         100000);
  9.         check_status("API cyhal_pwm_set_duty_cycle failed with error code", result);

  10.         /* Start the PWM */
  11.         result = cyhal_pwm_start(&pwm_led_control);
  12.         check_status("API cyhal_pwm_start failed with error code", result);

  13.         if(updown_flag==0)
  14.         {
  15.                 CYCLE_VAULE++;
  16.                 if(CYCLE_VAULE>=100)
  17.                 {
  18.                         updown_flag=1;
  19.                 }
  20.         }
  21.         else
  22.         {
  23.                 CYCLE_VAULE--;
  24.                 if(CYCLE_VAULE==0)
  25.                 {
  26.                         updown_flag=0;

  27.                         timenums++;
  28.                         if(timenums>=3)
  29.                                 break;
  30.                 }
  31.         }

  32.         cyhal_system_delay_ms(20);

  33.         /* Put the CPU into sleep mode to save power */
  34.         // cyhal_syspm_sleep();
  35. }

  36. cyhal_pwm_free(&pwm_led_control);


用户灯1效果:


RGB三种IO的PWM初始化:
  1. /* Initialize the PWM */

  2. result = cyhal_pwm_init(&pwm_led_rgbred_control, CYBSP_LED_RGB_RED, NULL);

  3. check_status("API cyhal_pwm_init rgbred failed with error code", result);

  4. /* Initialize the PWM */

  5. result = cyhal_pwm_init(&pwm_led_rgbgreen_control, CYBSP_LED_RGB_GREEN, NULL);

  6. check_status("API cyhal_pwm_init rgbgreen failed with error code", result);

  7. /* Initialize the PWM */

  8. result = cyhal_pwm_init(&pwm_led_rgbblue_control, CYBSP_LED_RGB_BLUE, NULL);

  9. check_status("API cyhal_pwm_init rgbblue failed with error code", result);

依次点亮八种颜色,红色、橙色、黄色、绿色、青色、蓝色、紫色、白色,每种颜色点亮1秒:
  1. for(;;)
  2. {
  3.         //红色
  4.         RGB_Light(PWM_FREQUENCY_RGBRED_red,PWM_DUTY_CYCLE_RGBRED_red,\
  5.         PWM_FREQUENCY_RGBGREEN_red,PWM_DUTY_CYCLE_RGBGREEN_red,\
  6.         PWM_FREQUENCY_RGBBLUE_red,PWM_DUTY_CYCLE_RGBBLUE_red
  7.         );

  8.         cyhal_system_delay_ms(1000);

  9.         //橙色
  10.         RGB_Light(PWM_FREQUENCY_RGBRED_Orange,PWM_DUTY_CYCLE_RGBRED_Orange,\
  11.         PWM_FREQUENCY_RGBGREEN_Orange,PWM_DUTY_CYCLE_RGBGREEN_Orange,\
  12.         PWM_FREQUENCY_RGBBLUE_Orange,PWM_DUTY_CYCLE_RGBBLUE_Orange
  13.         );

  14.         cyhal_system_delay_ms(1000);

  15.         //黄色
  16.         RGB_Light(PWM_FREQUENCY_RGBRED_Yellow,PWM_DUTY_CYCLE_RGBRED_Yellow,\
  17.         PWM_FREQUENCY_RGBGREEN_Yellow,PWM_DUTY_CYCLE_RGBGREEN_Yellow,\
  18.         PWM_FREQUENCY_RGBBLUE_Yellow,PWM_DUTY_CYCLE_RGBBLUE_Yellow
  19.         );

  20.         cyhal_system_delay_ms(1000);

  21.         //绿色
  22.         RGB_Light(PWM_FREQUENCY_RGBRED_Green,PWM_DUTY_CYCLE_RGBRED_Green,\
  23.         PWM_FREQUENCY_RGBGREEN_Green,PWM_DUTY_CYCLE_RGBGREEN_Green,\
  24.         PWM_FREQUENCY_RGBBLUE_Green,PWM_DUTY_CYCLE_RGBBLUE_Green
  25.         );

  26.         cyhal_system_delay_ms(1000);

  27.         //青色
  28.         RGB_Light(PWM_FREQUENCY_RGBRED_Cyan,PWM_DUTY_CYCLE_RGBRED_Cyan,\
  29.         PWM_FREQUENCY_RGBGREEN_Cyan,PWM_DUTY_CYCLE_RGBGREEN_Cyan,\
  30.         PWM_FREQUENCY_RGBBLUE_Cyan,PWM_DUTY_CYCLE_RGBBLUE_Cyan
  31.         );

  32.         cyhal_system_delay_ms(1000);

  33.         //蓝色
  34.         RGB_Light(PWM_FREQUENCY_RGBRED_Blue,PWM_DUTY_CYCLE_RGBRED_Blue,\
  35.         PWM_FREQUENCY_RGBGREEN_Blue,PWM_DUTY_CYCLE_RGBGREEN_Blue,\
  36.         PWM_FREQUENCY_RGBBLUE_Blue,PWM_DUTY_CYCLE_RGBBLUE_Blue
  37.         );

  38.         cyhal_system_delay_ms(1000);

  39.         //紫色
  40.         RGB_Light(PWM_FREQUENCY_RGBRED_Purple,PWM_DUTY_CYCLE_RGBRED_Purple,\
  41.         PWM_FREQUENCY_RGBGREEN_Purple,PWM_DUTY_CYCLE_RGBGREEN_Purple,\
  42.         PWM_FREQUENCY_RGBBLUE_Purple,PWM_DUTY_CYCLE_RGBBLUE_Purple
  43.         );

  44.         cyhal_system_delay_ms(1000);

  45.         //白色
  46.         RGB_Light(PWM_FREQUENCY_RGBRED_white,PWM_DUTY_CYCLE_RGBRED_White,\
  47.         PWM_FREQUENCY_RGBGREEN_white,PWM_DUTY_CYCLE_RGBGREEN_White,\
  48.         PWM_FREQUENCY_RGBBLUE_white,PWM_DUTY_CYCLE_RGBBLUE_white
  49.         );

  50.         cyhal_system_delay_ms(1000);
  51. }


RGB效果:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
中国龙芯CDX 发表于 2024-6-27 10:07 | 显示全部楼层
RGB经典的控制IO操作
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

133

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

21

主题

133

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部