怎么计时到0的时候让LED灯闪烁

LED灯的端口是P8,怎么让它循环闪烁,求编写过程,请大家帮帮忙

img

img

把第20行的代码换成如下代码试试

if(i%2==0)
  GPIO_SetBits(GPIOB,GPIO_PIN_8);
else
  GPIO_RestBits(GPIOB,GPIO_PIN_8);

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客也许可以解决你的问题👉 :单片机实验期末考试-使用两个外部中断控制8只LED显示的电路
  • 以下回答来自chatgpt:

    这个问题需要使用定时器来实现LED灯的循环闪烁功能。具体步骤如下:

    1. 首先需要在setup函数中初始化定时器。使用Timer库可以很方便地实现这个操作,代码示例如下:

    Timer1.initialize(1000000); // 初始化Timer1定时器,每隔1秒触发一次中断

    1. 在定时器中断服务函数中,控制LED灯的亮灭状态。可以使用digitalWrite函数,将P8端口的LED灯的电平状态取反。代码示例如下:

    void timer1_ISR() { digitalWrite(8, !digitalRead(8)); }

    1. 最后在setup函数中开启定时器中断。代码示例如下:

    Timer1.attachInterrupt(timer1_ISR); // 开启Timer1中断

    完整的代码范例如下:

    #include <TimerOne.h>
    
    void timer1_ISR();
    
    void setup() {
      pinMode(8, OUTPUT);
    
      Timer1.initialize(1000000); // 初始化Timer1定时器,每隔1秒触发一次中断
      Timer1.attachInterrupt(timer1_ISR); // 开启Timer1中断
    }
    
    void loop() {
      // 此处不需要任何操作
    }
    
    void timer1_ISR() {
      digitalWrite(8, !digitalRead(8)); // 控制P8端口的LED灯的电平状态取反
    }
    

    需要注意的是,Timer库需要用户自己下载并添加到Arduino开发环境中,可参考如下教程:https://arduino.stackexchange.com/questions/2099/how-can-i-use-timers-in-arduino-uno

    如果使用的是其他型号的Arduino开发板,也可以使用其他相应的定时器库实现。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^