GD32 程序运行异常排查


void LED_Init(void)
{
    GPIO_InitTypeDef GPIO_Initure;

    __HAL_RCC_GPIOA_CLK_ENABLE();               //¿ªÆôGPIOAʱÖÓ
      //__HAL_RCC_GPIOD_CLK_ENABLE();               //¿ªÆôGPIODʱÖÓ
    
    GPIO_Initure.Pin=GPIO_PIN_8;                 //PA8
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;      //ÍÆÍìÊä³ö
    GPIO_Initure.Pull=GPIO_PULLUP;              //ÉÏÀ­
    GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;    //¸ßËÙ
    HAL_GPIO_Init(GPIOA,&GPIO_Initure);

      //GPIO_Initure.Pin=GPIO_PIN_2;                 //PD2
      //HAL_GPIO_Init(GPIOD,&GPIO_Initure);
    
    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET);    //PA8ÖÃ1£¬Ä¬Èϳõʼ»¯ºóµÆÃð
    //HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);    //PD2ÖÃ1£¬Ä¬Èϳõʼ»¯ºóµÆÃð
    
}


void KEY_Init(void)
{
    GPIO_InitTypeDef GPIO_Initure;
    
    //__HAL_RCC_GPIOA_CLK_ENABLE();           //¿ªÆôGPIOAʱÖÓ
    //__HAL_RCC_GPIOC_CLK_ENABLE();           //¿ªÆôGPIOCʱÖÓ

    
    GPIO_Initure.Pin=GPIO_PIN_0;            //PA0
    GPIO_Initure.Mode=GPIO_MODE_INPUT;      //ÊäÈë
    GPIO_Initure.Pull=GPIO_PULLDOWN;        //ÏÂÀ­
    HAL_GPIO_Init(GPIOA,&GPIO_Initure);
    
    
      GPIO_Initure.Pin=GPIO_PIN_13;             //PA13
    GPIO_Initure.Pull=GPIO_PULLUP;          //ÉÏÀ­
    HAL_GPIO_Init(GPIOA,&GPIO_Initure);

}

        分析以上代码,PA8是输出的led灯,PA0和PA13输入的按键,当两个函数没有其他延时,相继运行,程序执行异常,直观现象是oled屏显示异常(已排查,IO没有复用等bug),通过一系列排查,当两个函数中间运行其他函数(初步判断是创建了延时时间),则程序执行正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值