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.

[参考译文] CCS/TM4C123GH6PM:TM4C123GXL

Guru**** 2461030 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/653521/ccs-tm4c123gh6pm-tm4c123gxl

器件型号:TM4C123GH6PM
主题中讨论的其他器件:TM4C123

工具/软件:Code Composer Studio

您好!

因此我有这个代码、从我执行的时候开始、它似乎执行我的初始任务:"进入休眠模式、然后使用外部按钮唤醒"。

我想确保我的板确实进入休眠模式、然后唤醒。

//
//
//如果驱动程序库遇到错误,则调用的错误例程。
////
*****************
#ifdef debug
void
__error__(char *dpcFilename、uint32_t ui32Line)
{

#endif


//*********
//
//配置 UART 及其引脚。 这必须在 UARTprintf()之前调用。
////
*****************
void
ConfigureUART (void)
{
//
//启用 UART 使用的 GPIO 外设。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);

//
//启用 UART0
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART0);

//
//为 UART 模式配置 GPIO 引脚。
//
ROM_GPIOPinConfigure (GPIO_PA0_U0RX);
ROM_GPIOPinConfigure (GPIO_PA1_U0TX);
ROM_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);

//
//使用内部16MHz 振荡器作为 UART 时钟源。
//
UARTClockSourceSet (UART0_BASE、UART_CLOCK_PIOSC);

//
//初始化控制台 I/O 的 UART
//
UARTStdioConfig (0、115200、16000000);
}

//*********
//
//按钮的中断处理程序。
////
*****************

void BottonHandler (void){
if ((GPIOIntStatus (GPIO_PORTF_BASE、TRUE)& Buttoninit1))
{
GPIOIntClear (GPIO_PORTF_BASE、Buttoninit1);//清除中断标志
TimerEnable (TIMER0_BASE、TIMER_A);//启用计时器
}
否则 if (((GPIOIntStatus (GPIO_PORTF_BASE、TRUE)& Buttoninit0))
{
GPIOIntClear (GPIO_PORTF_BASE、Buttoninit0);//清除中断标志
TimerDisable (TIMER0_BASE、TIMER_A);//禁用计时器
SysCtlPeripheralDisable (SYSCTL_Periph_HIBERNATE);//禁用休眠模块
HibernateGPIORetentionDisable ();//禁用 GPIO 保持
HibernateDisable();//disable the Hibernation module for operation.

}
}
void configureButtons(void){
//configureButton0
GPIOPinTypeGPIOInput (ButtonBase、Button0);
GPIOPadConfigSet (ButtonBase、Button0、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD_WPU);//注册端口 F 的处理程序函数
GPIOIntTypeSet (GPIO_PORTF_BASE、GPIO_PIN_0、GPIO_FALLING_EDGE);//为下降沿触发配置 PF4
GPIOIntRegister (GPIO_PORTF_BASE、BottonHandler);//为端口 F 注册处理程序函数
GPIOIntEnable (GPIO_PORTF_BASE、GPIO_INT_PIN_0);//为 PF0启用中断
// configureButton1
GPIOPinTypeGPIOInput (ButtonBase、Button1);
GPIOPadConfigSet (ButtonBase、Button1、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD_WPU);//注册端口 F 的处理程序函数
GPIOIntTypeSet (GPIO_PORTF_BASE、GPIO_PIN_4、GPIO_FALLING_EDGE);//为下降沿触发配置 PF4
GPIOIntRegister (GPIO_PORTF_BASE、BottonHandler);//为端口 F 注册处理程序函数
GPIOIntEnable (GPIO_PORTF_BASE、GPIO_INT_PIN_4);//为 PF4启用中断

}

void
Timer0IntHandler (void)
{

//
清除计时器中断。
//
TimerIntClear (TIMER0_BASE、TIMER_TINA_TIMEOUT);

UARTprintf ("休眠模式开启!\n");

SysCtlPeripheralEnable (SYSCTL_PERIPH_HIBER休眠);//启用休眠模块
HibernateEnnatExpClk (SysCtlClockGet ();//
启用休眠模块的休眠状态;//启用休眠模块。
SysCtlDelay (SysCtlClockGet ()/10);

HibernateWakeSet (HIBERNATE_WAKE_PIN);//将唤醒条件设置为唤醒引脚
SysCtlDelay (SysCtlClockGet ()/10);
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_3、0);//在器件进入绿色睡眠模式之前关闭 LED。
/*使器件能够在 RTC 或 WAKE
引脚上唤醒。 休眠
RTCSet (0);
//HibernateRTCEnable (0);
// HibernateRTCMatchSet (0、10);
//HibernateWakeSet (****WAKE_PIN | HIBERNATE_WAKE_RTC);/*HibernateRTCMIN

函数请求休眠模块禁用外部稳压器,切断
处理器和所有外设的电源







//
//打印"Hello World!" 连接到评估板上的 UART。
////
*****************
int
main (void)

{
//volatile uint32_t ui32Loop;

//
//为中断处理程序启用怠惰堆栈。 这允许使用浮点
//在中断处理程序中使用的指令,但代价是
//额外的堆栈用法。
//
//rom_FULazyStackingEnable();

//
//将时钟设置为直接从晶体运行。
//
ROM_SysCtlClockSet (SYSCTL_SYSDIV_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHz |
SYSCTL_OSC_MAIN);

//
//启用用于板载 LED 的 GPIO 端口。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);

//
//为 LED 启用 GPIO 引脚(PF2 & PF3)。
//
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_1_GPIO_PIN_2|GPIO_PIN_3);

//
//启用此示例使用的外设。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0);

//
//启用处理器中断。
//
ROM_IntMasterEnable();

//
//配置两个32位周期定时器。
//
ROM_TimerConfigure (TIMER0_BASE、TIMER_CFG_PERIODICASE);
ROM_TimerLoadSet (TIMER0_BASE、TIMER_A、ROM_SysCtlClockGet ());

//
//设置计时器超时的中断。
//
ROM_IntEnable (INT_TIMER0A);
ROM_TimerIntEnable (TIMER0_BASE、TIMER_TINA_TIMEOUT);
//
//为计时器中断注册中断处理程序。
//
TimerIntRegister (TIMER0_BASE、TIMER_A、Timer0IntHandler);
//
//初始化 UART。
//
ConfigureUART();
//
//初始化按钮。
//
configureButtons();
//
//您好!
//
UARTprintf ("Hello、world!\n");
SysCtlDelay (SysCtlClockGet ());

while (1)
{
UARTprintf ("运行模式已打开!\n");
SysCtlDelay (SysCtlClockGet ());
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_3、GPIO_PIN_3);
SysCtlDelay (SysCtlClockGet ()/10);
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_3、0);
SysCtlDelay (SysCtlClockGet ()/10);

}
} 

我不知道如何继续...任何帮助!!    

此致

艾米

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

    我建议您先尝试休眠示例程序。 根据我所知、当 TM4C 处于休眠模式时、流耗很低。 您可以使用 TM4C 电流消耗来了解它已进入休眠模式。 查看 TM4C 数据表、了解休眠模式的电流消耗。

    如果您使用的是 Tiva Launchpad、则即使您将 TM4C 置于休眠模式、板载调试器也会增加电流消耗。

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

    您好 Kel、

    您似乎"不知道" 该海报已询问"相同的问题"-之前-此论坛。

    e2e.ti.com/.../653287

    并已收到"要点"(详细)响应和方向。

    并且(已经)按照您的建议、在整洁的图表中"展示了"TM4C123电流消耗"。

    这种"重复"不可能产生(改进)结果...