答辩问题:使能时钟为什么可以降低能耗,答案只能是三个字左右的,求解
关电源(降低开关功耗)
不知道你这个问题是否已经解决, 如果还没有解决的话:这里采用的帧头为A , 帧尾为D 数据存储标志位m为’B‘的时候开始写入数组,m不是‘B’的时候停止写入数组
/*******************************************************************************
* 函 数 名 : USART1_IRQHandler
* 函数功能 : USART1中断函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
u8 r,m,n;
char str_Buffer[100]="",str_Data[100]=""; //这五个变量必须在串口中断服务函数外边定义
void USART1_IRQHandler(void) //串口1中断服务程序
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断
{
r =USART_ReceiveData(USART1); //(USART1->DR); //读取接收到的数据
if(m=='B') //写入数据标志位打开后,下一次进入中断
{
if(r=='D') //接收到帧尾
{
sprintf(str_Data,"%s",str_Buffer); //将str_Buffer数据写入str_Data
m='0'; //将数据写入标志位关闭 一次数据解析完成
printf("%s",str_Data) //打印出有效数据
}
sprintf(str_Buffer,"%s%c",str_Buffer,r); //将数据r拼接在str_Buffer的数组中
}
if(r=='A')
{
sprintf(str_Buffer,"%c",r); //如果接收到帧头A 则将数据写入str_Buffer
m='B'; //将数据写入标志位打开
}
//USART_SendData(USART1,r);
//while(USART_GetFlagStatus(USART1,USART_FLAG_TC) != SET);
}
//USART_ClearFlag(USART1,USART_FLAG_TC);
}
启用时钟可以降低能耗。