本人理解,就是使用串口就要退出低功耗,不使用串口了就进入低功耗,就是这么一个做法。
网上也有很多的资料。
_hal_uart.dma.c文件下的DMA_PM宏定义修改:
Option配置
//==========================
2541有两个串口,可以一个作为外设通信,一个作调试使用。外设通信当然就是用DMA的了,调用例程的串口初始化默认P1_6.7。
void Uart_Init(void)
{
uart1_init_flag = 1;
NPI_InitTransport(NpiSerialCallback);
}
/*****************************
@brief:串口1的字符串发送
@param: data-数据缓冲区
*/
void Uart1_Send_String(uint8 *data)
{
if(1 == uart1_init_flag)
NPI_PrintString(data);
}
/*****************************
@brief:串口1的数据发送
@param: Data-整形数据
*/
void Uart1_Send_Data(char Data)
{
if(1 == uart1_init_flag)
NPI_PrintString((uint8 *)&Data);
}
再自己去配置P0_2.3串口来使用,程序员一般缺不了打印。
void Uart0_Init_(void)
{
uart0_init_flag = 1;
PERCFG &= ~(1 << 0); //用于选择串口管脚位
P0SEL |= (0x01 << 3); //进行IO口配置
U0CSR |= 1 << 7; //选择串口零
U0GCR = 11;
U0BAUD = 216; //115200
UTX0IF = 0; //将串口发送标志位清零
// U0CSR |= 1 << 6; //允许接收数据
//
// URX0IE = 1;
// EA = 1;
}
要记得进入低功耗前把串口设置为普通io口,否则很大概率会影响低功耗标准。而且在低功耗模式下用不了串口,这就是要在进入退出低功耗前做的事情了。