打印

在ARDUINO中使用定时器中断

[复制链接]
877|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaoyang9992006|  楼主 | 2023-6-30 22:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#define LED_D4 12
#define LED_D5 13
#define BUTTON_BOOT 9
volatile bool ledState =false;
void timerISR()
{
  ledState = !ledState;
  digitalWrite(LED_D4, ledState);
}
hw_timer_t* timer = NULL;
// the setup function runs once when you press reset or power the board
void setup()
{
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_D4, OUTPUT);
  pinMode(LED_D5, OUTPUT);
  digitalWrite(LED_D4, 0);  
  digitalWrite(LED_D5, 0);
//  pinMode(BUTTON_BOOT, INPUT);

  timer = timerBegin(0, 80, true);
  timerAttachInterrupt(timer, &timerISR, true);
  timerAlarmWrite(timer, 1000000, true);
  timerAlarmEnable(timer);
}

// the loop function runs over and over again forever
void loop()
{
  // digitalWrite(LED_D4, HIGH);  // turn the LED on (HIGH is the voltage level)
  // delay(1000);                 // wait for a second
  // digitalWrite(LED_D4, LOW);   // turn the LED off by making the voltage LOW
  // delay(1000);                 // wait for a second

  // if(digitalRead(BUTTON_BOOT)==0)
  // {
  //   digitalWrite(LED_D5, 0);
  // }
  // else
  // {
  //   digitalWrite(LED_D5, 1);
  // }
}


使用特权

评论回复

相关帖子

沙发
gaoyang9992006|  楼主 | 2023-6-30 22:16 | 只看该作者
#include <Arduino.h>

#define LED_D4 12

volatile bool ledState = false; // LED状态标志

// 中断服务程序
void timerISR()
{
  ledState = !ledState; // 切换LED状态
  digitalWrite(LED_D4, ledState); // 设置LED状态
}

// 将定时器中断服务程序注册到中断向量表
hw_timer_t* timer = NULL;
void setupInterrupt()
{
  timer = timerBegin(0, 80, true); // 使用定时器0,预分频器为80,计数上升沿触发
  timerAttachInterrupt(timer, &timerISR, true); // 将中断服务程序绑定到定时器
  timerAlarmWrite(timer, 1000000, true); // 设置定时器报警值为1000000,对应1秒的计时周期
  timerAlarmEnable(timer); // 启用定时器报警
}

void setup()
{
  pinMode(LED_D4, OUTPUT); // 设置LED引脚为输出模式
  setupInterrupt(); // 配置定时器中断
}

void loop()
{
  // 主程序代码
}
定时器中断服务程序timerISR()被定义为独立的函数,并在setupInterrupt()中将其注册到定时器中断向量表中。这样,在定时器中断触发时,会自动执行timerISR()函数切换LED状态。

使用特权

评论回复
板凳
田舍郎| | 2023-6-30 23:08 | 只看该作者
学习一下

使用特权

评论回复
地板
gaoyang9992006|  楼主 | 2023-7-1 19:35 | 只看该作者

我了个去,我自己写的学习笔记藏这么深的板块还有人看?
那我改天写个Aruduino I2C和SPI通信接口的教程。

使用特权

评论回复
发新帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1961

主题

15933

帖子

208

粉丝