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/MSP430FR5994:RTC_C 在 MSP-EXP430FR5994上不工作

Guru**** 2555630 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/599244/rtos-msp430fr5994-rtc_c-not-working-on-msp-exp430fr5994

器件型号:MSP430FR5994
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

您好!

我正在为上述 launchpad 使用 CCS 7.1.0和 RTOS 2.20.00.06。

我已经以图形方式定义了一个 Hwi:

     

如我的 cmd 文件所示、与 RTC 相关的中断号为:RTC_C     :{*(.int31 )}> INT31类型= VECT_INIT

这是我的主文件:

#include
#include
#include
#include
#include
#include
#include
#include "Board.h"

volatile Int16_t i16ToggleCount = 0;
volatile Int16_t i16ToggleCount1 = 0;
volatile Calendar newTime;

void led1Toggle (void);
void led2Toggle (void);

int main (空)

日历当前时间;

Board_initGeneral();
Board_initGPIO();
GPIO_WRITE (Board_LED0、Board_LED_ON);
GPIO_WRITE (Board_LED1、Board_LED_ON);

CurrentTime.seconds = 0x00;
CurrentTime.Minutes = 0x30;
CurrentTime.hours = 0x17;
CurrentTime.DayOfWeek = 0x02;
CurrentTime.dayofmonth = 0x30;
CurrentTime.Month = 0x04;
CurrentTime.Year = 0x2017;
RTC_C_initCalendar (RTC_C_base、&CurrentTime、RTC_C_FORMAT_BCD);

RTC_C_CONFIGureCalendarAlarmParam ={0};
param.minutesAlarm = 0x35;
param.hoursAlarm = RTC_C_ALARMCONDITION_OFF;
param.dayOfWeekAlarm = RTC_C_ALARMCONDITION_OFF;
param.dayOfMonthAlarm = RTC_C_ALARMCONDITION_OFF;
RTC_C_CONFIGureCalendarAlarm (RTC_C_base、&param);

RTC_C_setCalendarEvent (RTC_C_base、RTC_C_CALENDAREVENT_INTOTECHANGE);

RTC_C_enableInterrupt (RTC_C_base、RTCRDYIE + RTCTEVIE + RTCAIE);
RTC_C_enableInterrupt (RTC_C_base、RTCRDYIFG + RTCTEVIFG + RTCAIFG);

RTC_C_startClock (RTC_C_base);

BIOS_start();

返回(0);

void led1Toggle (void)

GPIO_TOGGLE (Board_LED0);
i16ToggleCount += 1;
LOG_Info1 ("LED 切换[%u]次"、i16ToggleCount);

void led2Toggle (void)

GPIO_TOGGLE (Board_LED1);
i16ToggleCount1 += 1;
LOG_Info1 ("LED 切换[%u]次"、i16ToggleCount1);

空 RTC_ISR (uintptr_t arg)

led1Toggle ();

我已经为 RTC 配置了多个中断、并且 LED 始终亮起。

我还会附加 CCS 项目。

谢谢、此致、

Juan Antonioe2e.ti.com/.../blink_5F00_msp430_5F00_hwi_5F00_RTC.zip 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我尝试在我的代码中定义 ISR 时、这个问题的相关信息:

    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector=RTC_vector
    _interrupt
    #Elif defined (_GNU_)
    __attribute__((中断(RTC_Vector))
    #endif
    空 RTC_B_ISR (空)


    我收到一个指示该 ISR 重新定义的错误。

    我假设 RTOS 已实现此定义、但我不知道哪个文件位于中。

    有什么想法吗?

    谢谢、此致、

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

    您好!

    我可以解决 DE 问题。 随附了最终示例。 具体来说、配置了两个中断:每秒一个、每分钟另一个。 LED0与第一个 ISR 一起切换、LED1与另一个 ISR 一起切换。

    我希望它能帮助别人。

    另一方面、在定义 Hwi 时应该使用的中断号可以在 MSP_EXP430FR5994.cmd 文件中找到、该文件包含在每个 RTOS project.e2e.ti.com/.../2870.blink_5F00_msp430_5F00_hwi_5F00_RTC.zip 中

    此致、

    Juan Antonio

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

    很高兴您能够解决您的问题、感谢您发布解决方案的后续操作!