濛Johnny 发表于 2023-6-5 09:49:18

定时器和for循环开关输出不一样

想用定时器控制开关进行循环,按说应该是输出类似于方波的信号,但是定时器控制的结果却跟载波了一样

然后我就在while循环里用for循环进行延时,得到的结果是对的,这是为什么啊?

eric2013 发表于 2023-6-5 10:06:12

把你的逻辑判断精简下,翻转有专门的函数HAL_GPIO_TogglePin

濛Johnny 发表于 2023-6-5 10:55:05

eric2013 发表于 2023-6-5 10:06
把你的逻辑判断精简下,翻转有专门的函数HAL_GPIO_TogglePin

改成下面的了,还是和原来一样
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
        ///////////////////////////////////////*开关控制*///////////////////////////////////////
                if(htim == &htim1)
        {
                LightChange ++;
                if(LightChange == 1)
                {
                HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);
                LightType = 0x31;

                }
                if(LightChange == 2)
                {
                HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);

                LightType = 0x32;


                }
               
                if(LightChange == 3)
                {
                HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_7);


                LightType = 0x30;
               
                }
               
                if(LightChange == 4)
                {
                       
                HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_7);       

                LightType = 0x32;
                LightChange = 0;

                }
        }
}

eric2013 发表于 2023-6-5 11:11:15

把你代码分享到百度云,晚上有时间了我给你测试下,按说这个挺简单的。

庄永 发表于 2023-6-5 11:20:21

示波器放大了看,应该是没问题的。可能使用定时器的周期很短,一起看看起来这样子而已。

濛Johnny 发表于 2023-6-5 11:38:24

eric2013 发表于 2023-6-5 11:11
把你代码分享到百度云,晚上有时间了我给你测试下,按说这个挺简单的。

这是百度网盘的链接
链接:https://pan.baidu.com/s/1yUTSiKwHVWrWLG1EREQTQw
提取码:4qvo

eric2013 发表于 2023-6-6 01:02:57




我自己生成了个,测试正常。


濛Johnny 发表于 2023-6-6 11:13:33

eric2013 发表于 2023-6-6 01:02
我自己生成了个,测试正常。

懂了懂了,谢谢大佬。
页: [1]
查看完整版本: 定时器和for循环开关输出不一样