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/CC2538:smartRF06评估板

Guru**** 2538950 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/743935/ccs-cc2538-smartrf06-evaluation-board

器件型号:CC2538

工具/软件:Code Composer Studio

大家好。

我英语不太好。  请理解。

当前处于睡眠模式测试中。  编译器正在使用 IAR ARM 7.40进行开发。

但是、在下载后下载并打开电源时、RX 中断不起作用、并请求帮助。  

源如下所示。

//

//

//睡眠模式计时器 ISR

// jhsong 40ms

//

无效

SlepModeIntHandler (空)

unsigned int volatile ui32Val;

ST_TIME_1s.COUNT++;

ST_TIME_50ms.flag = 1;

if (st_time_1s.count>(1000/40))

ST_TIME_1s.COUNT = 0;

ST_TIME_1s.flag = 1;

ST_TIME_2S.COUNT++;

if (st_time_2s.count> 2)

ST_TIME_2S.COUNT = 0;

ST_TIME_2S.flag = 1;

返回;

 

 

/

UART1、Rx 完整 UART1_RXC_vect (0x48)

(二 /

//#ifdef USE_UART1

空 Uart1_enqueue (空)

字节 tmp = 0;

tmp = UARTCharGet (UART0_BASE);

//tmp = UARTCharGetNonBlocking (UART0_BASE);

COMM_Queue[UART_1].baRxQueue[comm_queue[UART_1].nRxHead]= tmp;

COMM_queue[UART_1].nRxHead++;

if (comm_queue[UART_1].nRxHead >= RX_queue_size)

Com_queue[UART_1].nRxHead = 0;

 

空 USART1_Init (uint32_t brate)

//启用 UART 外设模块

SysCtrlPeripheralEnable (SYS_CTRL_Periph_UART0);

//禁用 UART 功能

UARTDisable (UART0_BASE);

//将 IO 时钟设置为 UART 时钟源

UARTClockSourceSet (UART0_BASE、UART_CLOCK_PIOSC);

/232 PA0、PA1

IOCPinConfigPeriphOutput (GPIO_A_base、PA0_PIN_UART_TXD、IOC_MUX_OUT_SEL_UART0_TXD);//UART1 설정

GPIOPinTypeUARTOutput (GPIO_A_base、PA0_PIN_UART_TXD);

IOCPinConfigPeriphInput (GPIO_A_base、PA1_PIN_UART_RXD、IOC_UARTRXD_UART0);//UART1 설정

GPIOPinTypeUARTInput (GPIO_A_base、PA1_PIN_UART_RXD);

UARTConfigSetExpClk (UART0_BASE、SysCtrlClockGet ()、brate、

(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |

UART_CONFIG_PAR_NONE));

UARTIntDisable (UART0_BASE、0x1FFF);

UARTIntRegister (UART0_BASE、&UART1_ENqueue);

UARTIntEnable (UART0_BASE、UART_INT_RX | UART_INT_RT);

UARTFIFOEnable (UART0_BASE);

UARTEnable (UART0_BASE);

//UARTEnableSIR (UART0_BASE、0);

void sleep_init (void)

uint32_t ui32Val;

//

//在进入深度睡眠时让系统进入功率模式2

//

SysCtrlPeripheralDeepSlepDisable (SYS_CTRL_Periph_GPT0);

SysCtrlPeripheralDeepSlepDisable (SYS_CTRL_Periph_GPT1);

SysCtrlPeripheralDeepSlepDisable (SYS_CTRL_Periph_GPT2);

SysCtrlPeripheralDeepSlepDisable (SYS_CTRL_Periph_GPT3);

SysCtrlPeripheralDeepSlepDisable (SYS_CTRL_Periph_SSI0);

SysCtrlPeripheralDeepSlepDisable (SYS_CTRL_Periph_SSI1);

SysCtrlPeripheralDeepSlepEnable (SYS_CTRL_Periph_UART0);

SysCtrlPeripheralDeepSlepEnable (SYS_CTRL_Periph_UART1);

SysCtrlPeripheralDeepSlepDisable (SYS_CTRL_Periph_I2C);

SysCtrlPeripheralDeepSlepDisable (SYS_CTRL_Periph_PKA);

SysCtrlPeripheralDeepSlepDisable (SYS_CTRL_Periph_AES);

SysCtrlPeripheralDeepSlepDisable (SYS_CTRL_Periph_RFC);

//

//启用睡眠定时器唤醒

//

SysCtrlPowerModeSet (SYS_CTRL_PM_2);

GPIOIntWakeupEnable (GPIO_IWE_SM_TIMER);

IntEnable (INT_SMTIM);//

//将计时器设置为高于当前值10000

//

ui32Val = SlepModeTimerCountGet ();

睡眠模式定时器比较集(ui32Val + WAKE_UP_TIME);

SysCtrlDeepSlep();

 

void sleep_on (void)

unsigned int volatile ui32Val;

SysCtrlPeripheralDeepSlepEnable (SYS_CTRL_Periph_UART0);

SysCtrlPeripheralDeepSlepEnable (SYS_CTRL_Periph_UART1);

ui32Val = SlepModeTimerCountGet ();

睡眠模式定时器 CompareSet (ui32Val +(WAKE_UP_TIME));

SysCtrlDeepSlep();

main (空)

unsigned int i;

//将时钟设置为直接从外部晶振/振荡器运行。

//(无外部32k osc、无内部 osc)

//

SysCtrlClockSet (false、false、SYS_CTRL_SYSDIV_32MHz);

SysCtrlIOClockSet (SYS_CTRL_SYSDIV_32MHz);

GPIO_init();

USART1_Init (115200);

USART2_Init (115200);

//看门狗使能(watchdog_interval_32768);

sleep_init();

while (1)

SLEEP_ON();

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

    更确切地说、如果不进入节能模式、是否能够按预期获得 UART RX 中断? 如器件用户指南中所述、在 PM1-3中、没有外设处于活动状态、器件将无法在外设中断时唤醒。 但是、如果您设置了这些中断、则可以在实际 IO 中断时唤醒。

    尝试从 PM2更改为 PM0、看看它是否对您有所帮助。