一、描述你遇到的问题
点亮LED程序无法点亮我开发板的GPIO4和5引脚呢?用的官网下载的安装包,其他什么都没添加和修改,就这两个引脚无法点亮,是我的板子坏了吗??

点亮LED程序无法点亮我开发板的GPIO4和5引脚呢?用的官网下载的安装包,其他什么都没添加和修改,就这两个引脚无法点亮,是我的板子坏了吗??

正常情况下坏的可能性不大。
其他IO都可以,就这两个引脚不行吗?
对啊
能点亮其中一盏灯,就不太可能是板子有问题。大概率还是程序配置的问题。
另外不要直接在menuconfig中修改,这种一般建议在代码中直接修改更合理一些。
主要是试验了其他引脚都可以,就是GPIO4和5不好使,所以我才怀疑板子有问题呢
好的,现在还是GPIO4然后1秒时延。
现在重编译再烧录。
运行日志:boot.
Flash Init Fail! ret = 0x80001341
verify_public_rootkey secure verify disable!
verify_params_key_area secure verify disable!
verify_params_area_info secure verify disable!
verify_image_key_area secure verify disable!
verify_image_code_info secure verify disable!
SSB Uart Init Succ!
SSB Flash Init Succ!
verify_image_key_area secure verify disable!
verify_image_code_info secure verify disable!
Flashboot Uart Init Succ!
Flashboot Malloc Init Succ!
Flash Init Succ!
No need to fix SR!
io level work in hw mode, level[chip]:0x33
flashboot version : 1.10.102
[UPG] upgrade init OK!
No need to upgrade...
flash_encrypt disable.
verify_image_key_area secure verify disable!
verify_image_code_info secure verify disable!
APP|dbg uart init ok.
[UPG] upgrade init OK!
APP|init_sle_mac, mac_addr:0x50,0x56,0x12,0x64,0x**,0x**,
APP|init_dev_addr, mac_addr:0x50,0x56,0x12,0xed,0x**,0x**,
xo_trim_temp_comp val:0 0
los_at_plt_cmd_register EXCUTE
APP|thread[11] func null
cpu 0 entering scheduler
APP|btc open
[RADAR_LOG] alg ctrl read from nv [1][2][0][0][1][1][20]
device_main_init: 0!
===hal_initialize_phy===226===
device_module_init:: succ!
cali_set_cali_mask:old[0x0] -> new[0x1fa2]
fe_rf_initialize
cali_offline_cali_entry enter
cali_set_cali_done_flag:old[0x0] -> new[0x1]
rf cali OK. time cost:21, ret:0
xo update temp:3,diff:0,xo:0x30014
APP|[SYS INFO] mem: used:92264, free:273756; log: drop/all[0/0], at_recv 0.
APP|[SYS INFO] mem: used:92264, free:273756; log: drop/all[0/0], at_recv 0.
用万用表测量GPIO4电压

数值无变化!
现在改成GPIO5再试一下

运行日志:boot.
Flash Init Fail! ret = 0x80001341
verify_public_rootkey secure verify disable!
verify_params_key_area secure verify disable!
verify_params_area_info secure verify disable!
verify_image_key_area secure verify disable!
verify_image_code_info secure verify disable!
SSB Uart Init Succ!
SSB Flash Init Succ!
verify_image_key_area secure verify disable!
verify_image_code_info secure verify disable!
Flashboot Uart Init Succ!
Flashboot Malloc Init Succ!
Flash Init Succ!
No need to fix SR!
io level work in hw mode, level[chip]:0x33
flashboot version : 1.10.102
[UPG] upgrade init OK!
No need to upgrade...
flash_encrypt disable.
verify_image_key_area secure verify disable!
verify_image_code_info secure verify disable!
APP|dbg uart init ok.
[UPG] upgrade init OK!
APP|init_sle_mac, mac_addr:0x50,0x56,0x12,0x64,0x**,0x**,
APP|init_dev_addr, mac_addr:0x50,0x56,0x12,0xed,0x**,0x**,
xo_trim_temp_comp val:0 0
los_at_plt_cmd_register EXCUTE
APP|thread[11] func null
cpu 0 entering scheduler
APP|btc open
[RADAR_LOG] alg ctrl read from nv [1][2][0][0][1][1][20]
device_main_init: 0!
===hal_initialize_phy===226===
device_module_init:: succ!
cali_set_cali_mask:old[0x0] -> new[0x1fa2]
fe_rf_initialize
cali_offline_cali_entry enter
cali_set_cali_done_flag:old[0x0] -> new[0x1]
rf cali OK. time cost:22, ret:0
xo update temp:3,diff:0,xo:0x30014
APP|[SYS INFO] mem: used:92264, free:273756; log: drop/all[0/0], at_recv 0.
APP|[SYS INFO] mem: used:92264, free:273756; log: drop/all[0/0], at_recv 0.
测量GPIO5电压发现仍然无变化!

现在随机更改为GPIO6实验

运行日志:boot.
Flash Init Fail! ret = 0x80001341
verify_public_rootkey secure verify disable!
verify_params_key_area secure verify disable!
verify_params_area_info secure verify disable!
verify_image_key_area secure verify disable!
verify_image_code_info secure verify disable!
SSB Uart Init Succ!
SSB Flash Init Succ!
verify_image_key_area secure verify disable!
verify_image_code_info secure verify disable!
Flashboot Uart Init Succ!
Flashboot Malloc Init Succ!
Flash Init Succ!
No need to fix SR!
io level work in hw mode, level[chip]:0x33
flashboot version : 1.10.102
[UPG] upgrade init OK!
No need to upgrade...
flash_encrypt disable.
verify_image_key_area secure verify disable!
verify_image_code_info secure verify disable!
APP|dbg uart init ok.
[UPG] upgrade init OK!
APP|init_sle_mac, mac_addr:0x50,0x56,0x12,0x64,0x**,0x**,
APP|init_dev_addr, mac_addr:0x50,0x56,0x12,0xed,0x**,0x**,
xo_trim_temp_comp val:0 0
los_at_plt_cmd_register EXCUTE
APP|thread[11] func null
cpu 0 entering scheduler
APP|btc open
[RADAR_LOG] alg ctrl read from nv [1][2][0][0][1][1][20]
device_main_init: 0!
===hal_initialize_phy===226===
device_module_init:: succ!
cali_set_cali_mask:old[0x0] -> new[0x1fa2]
fe_rf_initialize
cali_offline_cali_entry enter
cali_set_cali_done_flag:old[0x0] -> new[0x1]
rf cali OK. time cost:22, ret:0
xo update temp:3,diff:0,xo:0x30014
APP|[SYS INFO] mem: used:92264, free:273756; log: drop/all[0/0], at_recv 0.
测量电压有变化


所以说真的不好使啊!

在这里加上5秒延时
但是现在其他引脚都好使啊,就GPIO4和5不行
unused(arg);
osal_msleep(5000); /* 上电后延时5秒再开始闪烁 */
uapi_pin_set_mode(CONFIG_BLINKY_PIN, PIN_MODE_0);
uapi_gpio_set_dir(CONFIG_BLINKY_PIN, GPIO_DIRECTION_OUTPUT);
uapi_gpio_set_val(CONFIG_BLINKY_PIN, GPIO_LEVEL_LOW);
添加了5秒延时,重编译烧录后还是没有
不是硬件问题,我们这边测是同样的现象,可能是软件底层复用了这两个IO口。
暂时还没找到哪个地方配置了,换成其他口吧。
请你们帮忙查找一下解决方案,因为其他程序需要GPIO4和5的情况也无法实现
#include "pinctrl.h"
#include "gpio.h"
#include "soc_osal.h"
#include "app_init.h"
#include "errcode.h"
#define BLINKY_DURATION_MS 1000
#define BLINKY_TASK_PRIO 24
#define BLINKY_TASK_STACK_SIZE 0x1000
static int blinky_task(const char *arg)
{
unused(arg);
errcode_t ret;
osal_msleep(1000); // 等待系统稳定
// 配置GPIO5为GPIO模式
ret = uapi_pin_set_mode(5, 4);
if (ret != ERRCODE_SUCC) {
osal_printk("Failed to set GPIO5 mode: %d\r\n", ret);
}
// 配置GPIO5为GPIO模式
ret = uapi_pin_set_mode(4, 2);
if (ret != ERRCODE_SUCC) {
osal_printk("Failed to set GPIO5 mode: %d\r\n", ret);
}
// 配置GPIO2为GPIO模式
ret = uapi_pin_set_mode(2, HAL_PIO_FUNC_GPIO);
if (ret != ERRCODE_SUCC) {
osal_printk("Failed to set GPIO2 mode: %d\r\n", ret);
}
// 设置驱动强度
uapi_pin_set_ds(5, PIN_DS_7);
uapi_pin_set_ds(2, PIN_DS_7);
uapi_pin_set_ds(4, PIN_DS_7);
// 设置为输出方向
ret = uapi_gpio_set_dir(5, GPIO_DIRECTION_OUTPUT);
if (ret != ERRCODE_SUCC) {
osal_printk("Failed to set GPIO5 direction: %d\r\n", ret);
}
ret = uapi_gpio_set_dir(2, GPIO_DIRECTION_OUTPUT);
if (ret != ERRCODE_SUCC) {
osal_printk("Failed to set GPIO2 direction: %d\r\n", ret);
}
ret = uapi_gpio_set_dir(4, GPIO_DIRECTION_OUTPUT);
if (ret != ERRCODE_SUCC) {
osal_printk("Failed to set GPIO4 direction: %d\r\n", ret);
}
// 设置初始电平
uapi_gpio_set_val(5, GPIO_LEVEL_LOW);
uapi_gpio_set_val(2, GPIO_LEVEL_LOW);
uapi_gpio_set_val(4, GPIO_LEVEL_LOW);
osal_printk("GPIO5 and GPIO2 initialized successfully\r\n");
int i=0;
while (1) {
osal_msleep(BLINKY_DURATION_MS);
uapi_gpio_toggle(5);
uapi_gpio_toggle(2);
uapi_gpio_toggle(4);
}
return 0;
}
static void blinky_entry(void)
{
osal_task *task_handle = NULL;
osal_kthread_lock();
task_handle = osal_kthread_create((osal_kthread_handler)blinky_task, 0, "BlinkyTask", BLINKY_TASK_STACK_SIZE);
if (task_handle != NULL) {
osal_kthread_set_priority(task_handle, BLINKY_TASK_PRIO);
osal_kfree(task_handle);
}
osal_kthread_unlock();
}
/* Run the blinky_entry. */
app_run(blinky_entry);
按照这个来,GPIO5的IO模式是4,GPIO4的IO复用是2
好的谢谢