TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2640R2F怎样才能正确的关闭的uart,从而实现POWER_SAVING

我现在是用的

UART_readCancel(stMVC_UART_Handle);
UART_writeCancel(stMVC_UART_Handle);
UART_close(stMVC_UART_Handle);

这三句话关闭串口,但是我测量功耗发现(在开启POWER_SAVING的前提下):
1.不启用uart,功耗为1uA左右,按键事件可以正常触发,唤醒

打开串口不关闭的时候是1.3mA,按键正常

调用上面三个函数后功耗反而上升到了3.7mA,按键无法触发

user6413309:

关闭串口后,功耗上升到了3.7mA,按键也无法触发,我怀疑是串口关闭出了问题

Kevin Qiu1:

回复 user6413309:

用的是哪个例程,看下时钟有没有关闭

user6413309:

回复 Kevin Qiu1:

用的是自己写的程序,参考的是software-dl.ti.com/…/_u_a_r_t_8h.html

user6413309:

回复 Kevin Qiu1:

是RTC时钟吗?

Kevin Qiu1:

回复 user6413309:

看起来是没有关闭串口,或者有其他应用还在运行

user6413309:

回复 Kevin Qiu1:

在上述三个函数的上面,加上uart_open获取uart_handle后,就可以正常关闭并开始低功耗运行了,但是当再次打开uart的时候卡死了,所以我想问一下当关闭了uart后,当外部中断触发时候打开uart,有什么需要注意的地方吗

Kevin Qiu1:

回复 user6413309:

注意下是否初始化了

/*! * @brief Function to initialize a given UART peripheral * * Function to initialize a given UART peripheral specified by the * particular index value. * * @pre UART_init() has been called * * @param index Logical peripheral number for the UART indexed into * the UART_config table * * @param params Pointer to a parameter block. If NULL, default * parameter values will be used. All the fields in * this structure are RO (read-only). * * @return A #UART_Handle upon success. NULL if an error occurs, or if the * indexed UART peripheral is already opened. * * @sa UART_init() * @sa UART_close() */extern UART_Handle UART_open(uint_least8_t index, UART_Params *params);

user6413309:

回复 Kevin Qiu1:

第一次关闭uart,我使用uart_open获取了uart句柄,继而使用UART_close关闭uart,但外部中断触发,打开uart,发送完数据后,关闭uart,但这次关闭uart,程序中若还使用uart_open获取句柄会导致程序崩溃,注释掉uart_open则无碍,可以正常开关uart,所以我这里有一个疑惑,为什么第一次关闭uart的时候需要重新获取uart句柄,再执行UART_close,而第二次关闭uart则不需要了呢?

user6413309:

回复 Kevin Qiu1:

ok,谢谢

赞(0)
未经允许不得转载:TI中文支持网 » CC2640R2F怎样才能正确的关闭的uart,从而实现POWER_SAVING
分享到: 更多 (0)