Học lập trình STM32 với Visual Code | Bài 3: Interupt Timer - Ngắt Timer

 

Học lập trình STM32 với Visual Code  | Bài 3: Interupt Timer - Ngắt Timer
Timer là một loại ngoại vi được tích hợp ở hầu hết các vi điều khiển, cung cấp cho người dùng nhiều ứng dụng như xác định chính xác một khoảng thời gian, đo – đếm xung đầu vào, điều khiển dạng sóng đầu ra, băm xung….

Source code:

#include <Arduino.h>
#include <HardwareTimer.h>
#include <HardwareSerial.h>

#define LED1 PD2
#define LED2 PA8
#define LED3 PB11
#define INTERVAL1 1000000
#define INTERVAL2 1000000
#define INTERVAL3 1000000

HardwareTimer Timer1(TIM1);
HardwareTimer Timer2(TIM2);
HardwareTimer Timer3(TIM3);
HardwareSerial Serial_Mon(PA10PA9); // RX, TX

void ngat1()
{
  Serial_Mon.println("Interupt Timer 1");
  int state = digitalRead(LED1);
  if (state == HIGH)
  {
    digitalWrite(LED1LOW);
  }
  else
  {
    digitalWrite(LED1HIGH);
  }
}

void ngat2()
{
  Serial_Mon.println("Interupt Timer 2");
  int state = digitalRead(LED2);
  if (state == HIGH)
  {
    digitalWrite(LED2LOW);
  }
  else
  {
    digitalWrite(LED2HIGH);
  }
}

void ngat3()
{
  Serial_Mon.println("Interupt Timer 3");
  int state = digitalRead(LED3);
  if (state == HIGH)
  {
    digitalWrite(LED3LOW);
  }
  else
  {
    digitalWrite(LED3HIGH);
  }
}

void setup()
{
  Serial_Mon.begin(9600);

  pinMode(LED1OUTPUT);
  pinMode(LED2OUTPUT);
  pinMode(LED3OUTPUT);

  Timer1.pause();
  Timer1.setOverflow(INTERVAL1MICROSEC_FORMAT);
  Timer1.attachInterrupt(ngat1);
  Timer1.resume();

  Timer2.pause();
  Timer2.setOverflow(INTERVAL2MICROSEC_FORMAT);
  Timer2.attachInterrupt(ngat2);
  Timer2.resume();

  Timer3.pause();
  Timer3.setOverflow(INTERVAL3MICROSEC_FORMAT);
  Timer3.attachInterrupt(ngat3);
  Timer3.resume();
}

void loop()
{
  
}

Link download source file zip: Download

Video hướng dẫn:



No comments:

Post a Comment