博流遇到的问题
2022.4.7
功能
一般情况下,一个灯1常亮,当我摁下开关时该灯会熄灭,同时灯2、灯3会开始闪烁。
计划
结合gpio_int和gpio_blink两个程序,更改了gpiogpio19、gpio20、gpio21、gpio22四个引脚的功能,更改为pwm,计划用gpio19、gpio20两个引脚来控制灯2、灯3闪烁,gpio21引脚用于表示灯1常亮,gpio22引脚用于接受摁下开关的信号,进行功能实现。
程序
用gpio_set_mode对gpio19、gpio20、gpio21三个引脚进行初始化,并将gpio19、gpio20引脚的电平设为0,将gpio21的电平设置为1,然后将gpio22设置成接受摁下开关信号,并将中断事件设置为让灯1熄灭,灯2灯3闪烁。
实验
cdk下载生成了bin文件,烧录到BL706板子上,线路连接参照了书上,但并未出现目标功能,一个灯都未亮。
代码
#include"bflb_platform.h"
#include"hal_gpio.h"
//19 20 red light 21 green light 22 int
void gpio_controlcenter_init(void)
{
gpio_set_mode(GPIO_PIN_19,GPIO_OUTPUT_PP_MODE);
gpio_set_mode(GPIO_PIN_20,GPIO_OUTPUT_PP_MODE);
gpio_set_mode(GPIO_PIN_21,GPIO_OUTPUT_PP_MODE);
gpio_write(GPIO_PIN_19,0);
gpio_write(GPIO_PIN_20,0);
gpio_write(GPIO_PIN_21,1);
}
void led_running (void)
{
gpio_write(GPIO_PIN_19, 1);
bflb_platform_delay_ms(200);
gpio_write(GPIO_PIN_19, 0);
gpio_write(GPIO_PIN_20, 1);
bflb_platform_delay_ms(200);
gpio_write(GPIO_PIN_20, 0);
}
static void gpio_int_callback(uint32_t pin)
{
gpio_write(GPIO_PIN_21,0);
while(1){
led_running();
}
}
int main(void)
{
bflb_platform_init(0);
gpio_controlcenter_init();
gpio_set_mode(GPIO_PIN_22, GPIO_SYNC_FALLING_TRIGER_INT_MODE);
gpio_attach_irq(GPIO_PIN_22, gpio_int_callback);
gpio_irq_enable(GPIO_PIN_22, ENABLE);
BL_CASE_SUCCESS;
while (1) {
bflb_platform_delay_ms(100);
}
}
连接照片




