stm32学习板中关于时钟的问题

答辩问题:使能时钟为什么可以降低能耗,答案只能是三个字左右的,求解

关电源(降低开关功耗)

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7435689
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:STM32学习笔记之:什么是存储器与寄存器及修改寄存器的位操作方法
  • 除此之外, 这篇博客: stm32学习之用串口调试助手向单片机发送指定字符串,并存储进指定数组中的 二、串口中断服务函数(功能部分的代码) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    这里采用的帧头为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);
    } 

     

  • 您还可以看一下 朱有鹏老师的STM32标准库的引入视频课程-第3季第6部分课程中的 3.6.1.为什么会有标准外设库小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    启用时钟可以降低能耗。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^