WiFi-IoT套件的LED灯光控制和PWM控制

该功能非常简单,即操作GPIO来控制LED的开和关,以及操作PWM输出来控制LED的亮度,但是在此过程中存在很多问题。第一个是GPIO输出的高电平和低电平控制LED灯亮和灭。
检查官方文章提供的示意图,找到灯泡部分的电路。我发现实际上有两个灯板,但其中一个是交通灯板,另一个是三色RGB灯。
控制引脚完全相同。以RGB灯板为例。
根据接口,转到背板接口进行检查,它可以对应于:red-GPIO10_PWM1 green-GPIO11_PWM2 blue-GPIO12_PWM3核心板LED1-GPIO9下一个修改直接在SDK的ap / iothardware / led_example中。在c中修改。
已有GPIO初始化和调用,这里只是添加和修改引脚。注意:示例中使用的GPIO9是核心板上的LED1。
如果插入了RGB灯板,则LED1将始终亮着,并且不会随着引脚的变化而改变。这一点使我很久以来一直怀疑代码。
后来,我检查了电路图,发现RGB灯板的GPIO9引脚已连接到红外检测引脚。该引脚被拉高,也就是说,主控制器被拉低以使LED1熄灭,但实际上它不会熄灭。
GPIO操作在这里完成,非常简单,只需在官方例程中对其进行修改即可。但是,还没有结束。
如上所述,RGB的三个引脚是复用功能,可以与PWM输出功能复用。在这里,我们继续将代码更改为PWM控制。
首先初始化GPIO,然后将这3个引脚设置为PWM复用输出功能,并指定PWM时钟。 #defineLED_REDWIFI_IOT_IO_NAME_GPIO_10#defineLED_GREENWIFI_IOT_IO_NAME_GPIO_11#defineLED_BLUEWIFI_IOT_IO_NAME_GPIO_12GpioInit(); IoSetFunc(LED_RED,WIFI_IOT_IO_FUNC_GPIO_10_PWM1_OUT); GpioSetDir(LED_RED,WIFI_IOT_GPIO_DIR_OUT); IoSetFunc(LED_GREEN,WIFI_IOT_IO_FUNC_GPIO_11_PWM2_OUT); GpioSetDir(LED_GREEN,WIFI_IOT_GPIO_DIR_OUT); IoSetFunc(LED_BLUE,WIFI_IOT_IO_FUNC_GPIO_12_PWM3_OUT); GpioSetDir(LED_BLUE,WIFI_IOT_GPIO_DIR_OUT); hi_pwm_init(HI_PWM_PORT_PWM1); hi_pwm_init(HI_PWM_PORT_PWM2); hi_pwm_init(HI_PWM_PORT_PWM3); hi_pwm_set_clock(PWM_CLK_160M);初始化完成后,它是控制PWM占空比以调节LED亮度的功能。
voidLedPWM(uint16pwm_r,uint16pwm_g,uint16pwm_b){hi_pwm_start(HI_PWM_PORT_PWM1,pwm_r,1600); hi_pwm_start(HI_PWM_PORT_PWM2,pwm_g,1600); PWM(在此周期执行,HI_PWM1,1600); hi_pwm_start(执行此操作)占空比的值。 switch(sta){case0:if(pwm_R《 1500)pwm_R + = 5; else {sta = 1; pwm_R = 2; pwm_G = 2; pwm_B = 2;} break; case1:if(pwm_G《 1200)pwm_G + = 5; else {sta = 2; pwm_R = 2; pwm_G = 2; pwm_B = 2;} break;情况2:if(pwm_B《 1200)pwm_B + = 5; else {sta = 0; pwm_R = 2; pwm_G = 2; pwm_B = 2 ;} break;} LedPWM(pwm_R,pwm_G,pwm_B); usleep(2);与PWM相关的功能都在hi_PWM.h中定义,因此必须引用此头文件,并在此示例所在的BUILD.gn文件中也添加其位置:“ // vendor / hisi / hi3861 / hi3861 // include”。
。在应用程序所在的BUILD.gn中的功能项目中,添加新led_example.c所在的路径:“ iothardware:led_example”。
似乎设置和实现已在这里完成。但是,编译时直接报告错误:undefinedreferencetohi_PWM_start和其他几个函数。
这个问题困扰了我很长时间。后来,我查看了联执安ole驱动程序中的IIC操作,以了解代码的PWM部分仅在hi3861驱动程序中打开PWM功能时才编译,否则找不到特定的实现。
编译失败。具体来说,在vendor / hisi / hi3861 / hi3861 / build / config / usr_config.mk文件中添加CONFIG_PWM_SUPPORT = y。
当您不熟悉整个框架时,解决问题并不容易。另外,在调试PWM的过程中,发现不应将hi_PWM_start函数中的duty参数设置为0。
调试3种颜色时,这两种颜色均设置为0,实际上是白色,并且两种颜色均为明亮的。稍后,将其设置为2是可以的,并且这三种颜色不会互相影响。

公司: 深圳市捷比信实业有限公司

电话: 0755-29796190

邮箱: ys@jepsun.com

产品经理: 汤经理

QQ: 2057469664

地址: 深圳市宝安区翻身路富源大厦1栋7楼

微信二维码

更多资讯

获取最新公司新闻和行业资料。