This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/EK-TM4C129EXL:使用定时器中断进行调度

Guru**** 2481465 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/703345/rtos-ek-tm4c129exl-scheduling-with-timer-interrupts

器件型号:EK-TM4C129EXL

工具/软件:TI-RTOS

我正在使用计时器模块。 我使用 XGCONF 来配置定时器。 ISR 函数用于每1秒切换 LED 的状态。 LED 往往会持续发光、而不是闪烁1秒钟。 我无法在代码中找到问题。  

/*
=== empty_min.c ====
/*

/* XDCtools 头文件*////----------------


// BIOS 头文件
//---------------

#include 
#include 
#include 
#include 


///----------------------
// TivaWare 头文件
//---------------

#include 
#include 
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "inc/hw_ints.h"
#include "driverlib/interrupt.h"
#include "driverlib/timer.h"




/*头文件

#include 
/* TI-RTOS 头文件*/

#include 


/*板头文件*/
#include "Board.h"

#define TASKSTACKSIZE 128


Task_Structure0Struct;
Char task0Stack[TASKSTACKSIZE];
void Timer_ISR (void);


/* === 心跳 Fxn ==== *切换 Board_LED0。 Task_sleep 由 arg0确定、而 arg0 *是为心跳任务实例配置的。 // void 心跳 Fxn()//这是 ISR 函数 { GPIO_TOGGLE (Board_LED0); } /* ===== main ==== */ int main (void) { Task_Params taskParams; /*呼叫板初始化函数*/
Board_initGeneral(); Board_initGPIO(); /*构造心跳任务线程*/ Task_Params_init (&taskParams); taskParams.STACKSIZE = TASKSTACKSIZE; taskParams.stack =_task0Stack; Task_construct(&task0Struct,(Task_FuncPtr)心跳 BeatFxn、&taskParams、NULL); /*打开用户 LED */ GPIO_WRITE (Board_LED0、Board_LED_ON); /*启动 BIOS */ BIOS_start(); 返回(0); }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Naveen、

    您能否在 GPIO_toggle 上设置断点以确认它是否正在运行。

    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    刚刚注意到...您也在使用 BeatBeatFxn 作为任务。 删除 main()中任务的创建。 我预计计时器正在运行、但任务也在运行、因此 GPIO_toges 被调用两次、因此它不会在一秒钟内关闭。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Naveen、

    这是否得到了解决?

    Todd

    [7/3更新:将此标记为 TI 认为已解决。]