我现在是用的
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,谢谢