打印

stm32U575 arduino进不了中断

[复制链接]
2535|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lulugl|  楼主 | 2022-12-14 10:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在学习arduino驱动STM32U575,开发环境为vs code platformio。freertos。我在使用检测IO是可以的,但是用中断,进不了中断。代码如下:#include <Arduino.h>
#include <STM32FreeRTOS.h>
volatile bool btnPressed = true;
volatile bool btnReleased = false;
volatile int couter = 0;

SemaphoreHandle_t xSemaLED = NULL; //创建信号量Handler
volatile TickType_t btnDeounce = 0; //用于button Debounce

TickType_t timeOut = 1000; //用于获取信号量的TimeOut 1000ticks
byte pin = PB7;
void flashLED(void * pt) {

  pinMode(pin,OUTPUT);
  while(1)
  {
    if(xSemaphoreTake(xSemaLED, timeOut) == pdTRUE)
    {
      if((xTaskGetTickCount() - btnDeounce) < 100){
        digitalWrite(pin, !digitalRead(pin));
        vTaskDelay(1000);
      }
    }
  }
}

void buttonPressed()  {
  Serial.println("but clicked.");
  btnDeounce = xTaskGetTickCountFromISR();
  xSemaphoreGiveFromISR(xSemaLED, NULL);
}
void setup() {
  Serial.begin(115200);
  Serial.println("Start flash led....");
  xSemaLED = xSemaphoreCreateBinary();
  if ( xSemaLED == NULL){
    Serial.println("No Enough Ram, Unable to Create Semaphore.");
  }else{
    xTaskCreate(flashLED,
                "Flash LED",
                1024,
                NULL,
                6,
                NULL);
  }
  pinMode(PC13, INPUT_PULLDOWN);
  attachInterrupt(PC13,buttonPressed,HIGH);// 创建外部中断
}

void loop() {
  // put your main code here, to run repeatedly:
}


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

744

帖子

10

粉丝