BLDC风扇方案介绍-开发中遇到的问题

开发过程中的问题

本文主要介绍在实际开发过程中遇到的问题,以及如何解决的。

  1. 在板子上调节档位导致重启
    在开发完成后进行测试的情况下,发现在板子上快速转动旋转编码器会导致系统不受控制,然后重启,后来发现是因为旋转编码器使用的外部中断的方式导致的。由于一直转动编码器,导致系统一直处于外部中断中,其他任务无法正常执行,从而系统重启。
    解决办法:将编码器触发判断设置成任务的形式,定期去判断电平处理。这样处理完后,系统重启问题基本解决,但是有时多次连续触发判断不及时,但基本问题还好。
    解决问题的偷懒方法:
void key_rotary_task(void)
{
   
    INT8_T current_gear;

    while(1) {
   
        //得到当前档位
        current_gear = get_cur_gear();
        if((tuya_gpio_read(KEY_ROTARY_A) == FALSE) && (fan_state.on_off != FALSE)) {
   
            while(tuya_gpio_read(KEY_ROTARY_A) == FALSE);
            if(tuya_gpio_read(KEY_ROTARY_A) != tuya_gpio_read(KEY_ROTARY_B)) {
   
                PR_NOTICE("A != B"); //顺时针方向
                current_gear++;
                if (current_gear > (MAX_GEAR_NUMBER-1)) 

你可能感兴趣的:(BLDC风扇方案介绍-开发中遇到的问题)