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.
工具与软件:
TM4C129ENCPDT TIRTOS 文件夹中的 sysctl.h 文件具有声明的函数"SysCtlBrownOutConfigSet"、但是没有针对这个函数的原型、数据表似乎表明这个功能是不可能的。
SysCtlBrownOutConfigSet 甚至可以与 TM4C129ENCPDT 相关吗?
如果是、在哪里可以找到函数定义和使用示例。
如果没有、是否有一个示例说明我可以如何更改欠压、以便它为我提供中断而不是将处理器复位、最好是 TI-RTOS 下具有典型中断功能的示例、以便我可以看到它是如何处理 BOR 的。
我的项目是使用 tirtos_tivac_2_16_01_14构建的、我想了解一些可以轻松停止欠压触发的选项以及可以将我的 PCB 复位以实现电源电压瞬间降至2.9V 的选项。
巴里、您好!
我做了一些调查。 不再有 SysCtlBrownOutConfigSet API。 错误之处在于 sysctl.h 头文件中。 SysCtlBrownOutConfigSet 是一个 API、为早期的 MCU (LM3S)配置欠压电路。
唯一与 TM4C MCU 欠压相关的寄存器是 PTBOCTL 寄存器、在该寄存器中、您唯一可以更改的是检测到欠压时的事件操作类型(例如 NMI、复位或中断)。 数据表的"电气规格"中记录了检测欠压的阈值电压。 阈值电压不可编程。
谢谢
这证实了我所认为的情况。
您能告诉我、有关我如何启用 BOR 中断并在 TIRTOS 下处理它的示例吗?
这是我认为需要的
// ---------------------------------------------------------------------------------------- // TM4C129ENCPDT has BOR (Brown Out Reset) and POR (Power On Reset) // BOR triggers at 2.86V (2.77 - 2.95), POR triggers at 2.20V (1.84 - 2.56), // It is possible to have BOR just generate an interrupt and not a reset. // By default BOR will generate a Reset of the CPU. // It is not possible to change POR operation, it will always reset the CPU. // SysCtlBrownOutConfigSet does not exist for TM4C129ENCPTD - // It is for older family of processors. // // Enable Interrupt for brown out SysCtlVoltageEventConfig(SYSCTL_VEVENT_VDDABO_NONE | SYSCTL_VEVENT_VDDBO_INT); SysCtlIntRegister(sysCtlInterruptFn); // ----------------------------------------------------------------------------------------
我创建了这个函数、只是弄清楚如何确定中断源
///////////////////////////////////////////////////////////////////////////// /// System Control Interrupt handler. /// \brief handler for system interrupt. /// \return None. void sysCtlInterruptFn(void) { // }
您能告诉我、有关我如何启用 BOR 中断并在 TIRTOS 下处理它的示例吗?
[报价]您好!
本身没有 BOR 事件的示例。 您需要创建一个 Hwi 并让 TI-RTOS 来处理中断 、而不是使用 SysCtlIntRegister。 当您使用 SysCtlIntRegister (sysCtlInterruptFn)时、这将破坏由 TI-TRTOS 管理的中断表。 请参阅这篇文章 https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/849627/faq-can-i-update-the-vector-table-with-intregister-when-using-ti-rtos?tisearch=e2e-sitesearch&keymatch=ti-rtos%20vector%20table#
如果您查看中断向量表、会发现系统控制被映射到向量编号44。
您可以使用以下示例为矢量44创建 Hwi。
Hwi_Params hwiParams;
Hwi_Handle myHwi;
Error_Block eb;
/* Initialize error block and hwiParams to default values */
Error_init(&eb);
Hwi_Params_init(&hwiParams);
hwiParams.enableInt = FALSE;
myHwi = Hwi_create(44, (Hwi_FuncPtr)sysCtlInterruptFn, &hwiParams, &eb);
if (myHwi == NULL) {
System_abort("Hwi create failed");
}
Hwi_enableInterrupt(44);
有缺口…
void sysCtlInterruptFn(void)
{
uint32_t ui32VoltageEvents;
//
// Read the current voltage event status.
//
ui32VoltageEvents = SysCtlVoltageEventStatus();
//
// Clear all the current voltage events.
//
SysCtlVoltageEventClear(ui32VoltageEvents);
//
// Add your user code on how to handle BOR event
}