STM32CUBEMX怎么写程序让小灯一开始就是不亮的

STM32CUBEMX怎么写程序让小灯一开始就是不亮的,第1张

1新建工程打开STM32cubeMX软件,点击New Project。选择对应开板MCU(STM32F103ZET6)。选择工程后进入工程界面,如下图所示。 2 配置外设。 RCC设置,选择HSE(外部高速时钟)为Crystal/Ceramic Resonator(晶振/陶瓷谐振器) GPIO口功能选择,PF6,PF7,PF8,PF9为LED1-LED4找到对应管脚设置为GPIO_Output模式。(**引脚为该功能的GPIO已被用作其他功能,可以忽略。绿色表示管脚已使用) 3 时钟配置时钟配置采用图形配置,直观简单。各个外设时钟一目了然。STM32最高时钟为72M,此处只有在HCLK处输入72,软件即可自动配置。(RCC选择外部高速时钟)。 4功能外设配置在配置框我们可以看到有几个区域,分别对应的功能设置如下 Multimedia(多媒体):音频视频、LCD Control(控制):定时器 Analog(模拟):DAC、ADC Connectivity(通讯连接):串口、SPI 、I2C、USB、ETH SYStem(系统):DMA(直接存储器存取)、GPIO、NVIC、RCC、看门狗 middlewares(中间件): FreeRTOS、FATFS、LwIP、USB 此工程中DMA没用的不用配置,NVIC(嵌套中断向量控制器(Nested Vectored Interrupt Controller))配置中断优先级。RCC不用配置。 GPIO Pin Level (管脚状态):低电平 GPIO mode (管脚模式 ):推挽输出 Maximum output speed (最大输出速度):低速 User Label (用户标签):LED1 更改用户标签,管脚配置图会显示管脚的标签。 4 功耗计算这个根据配置的外设计算功耗,不用理会。 5 生成工程报告

给你看看原子的外部时钟配置

//系统时钟初始化函数

//pll:选择的倍频数,从2开始,最大值为16

//CHECK OK

//091209

void Stm32_Clock_Init(u8 PLL)

{

unsigned char temp=0;   

MYRCC_DeInit();  //复位并配置向量表

RCC->CR|=0x00010000;  //外部高速时钟使能HSEON

while(!(RCC->CR>>17));//等待外部时钟就绪

RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;

PLL-=2;//抵消2个单位

RCC->CFGR|=PLL<<18;   //设置PLL值 2~16

RCC->CFGR|=1<<16;  //PLLSRC ON 

FLASH->ACR|=0x32;  //FLASH 2个延时周期

RCC->CR|=0x01000000;  //PLLON

while(!(RCC->CR>>25));//等待PLL锁定

RCC->CFGR|=0x00000002;//PLL作为系统时钟 

while(temp!=0x02)     //等待PLL作为系统时钟设置成功

{   

temp=RCC->CFGR>>2;

temp&=0x03;

}    

}

周期性唤醒标志由 16 位可编程自动重载递减计数器生成。唤醒定时器范围可扩展至 17 位。

可通过 RTC_CR 寄存器中的 WUTE 位来使能此唤醒功能。

唤醒定时器的时钟输入可以是:  2、4、8 或 16 分频的 RTC 时钟 (RTCCLK)。

当 RTCCLK 为 LSE (32768 kHz) 时,可配置的唤醒中断周期介于 122 µs 和 32 s 之 间,且分辨率低至 61 µs。

· ck_spre(通常为 1 Hz 内部时钟)。

当 ck_spre 频率为 1 Hz 时,可得到的唤醒时间为 1s 到 36h 左右,分辨率为 1 秒。这 一较大的可编程时间范围分为两部分:

– WUCKSEL [2:1] = 10 时为 1s 到 18h

– WUCKSEL [2:1] = 11 时约为 18h 到 36h。在后一种情况下,会将 216 添加到 16 位计数器当前值。完成初始化序列后(请参见第 600 页的编程唤醒定时器),定时 器开始递减计数。在低功耗模式下使能唤醒功能时,递减计数保持有效。此外,当 计数器计数到 0 时,RTC_ISR 寄存器的 WUTF 标志会置 1,并且唤醒寄存器会使用其重载值(RTC_WUTR 寄存器值)动重载。 之后必须用软件清零 WUTF 标志。

通过将 RTC_CR2 寄存器中的 WUTIE 位置 1 来使能周期性唤醒中断时,它会使器件退出低功耗模式。

如果已通过 RTC_CR 寄存器的位 OSEL[1:0] 使能周期性唤醒标志,则该标志可连接到RTC_ALARM 输出。可通过 RTC_CR 寄存器的 POL 位配置 RTC_ALARM 输出极性。

系统复位以及低功耗模式(睡眠、停机和待机)对唤醒定时器没有任何影响。

 

二、配置周期唤醒

配置步骤如下:

1 禁用周期唤醒功能,复位RTC_CR2中WUTE位;

2 等待RTC_ISR1中WUTWF位置位,表示唤醒计数器可配置;

3 配置唤醒时钟,设置RTC_CR1中WUCKSEL[2:0]位:

- 000: RTCCLK/16

- 001: RTCCLK/8

- 010: RTCCLK/4

- 011: RTCCLK/2

- 10x: ck_spre(1Hz,WUT计数范围:0x0000~0xFFFF)

- 11x: ck_spre(1Hz,WUT计数范围:0x10000~0x1FFFF)

4 配置唤醒周期,装载寄存器RTC_WUTRH和RTC_WUTRL;

5 使能周期唤醒功能,置位RTC_CR2中WUTE位。(该中断会使MCU退出低功耗状态,进入运行状态。)

 

 

RTCCLK,预分频2,4,8或16。如果RTCCLK为LSE,即32768Hz,则可配置唤醒周期为:(61us ~ 32s)

 

ck_spre, 1Hz时钟,则可配置唤醒周期为:(1s ~ 36h)

 

三、RTC时钟配置

1、时钟源选择:RTC时钟源可选HSE,LSE,HSI或LSI。

为确保RTC精确工作,要求系统时钟(SYSCLK)必须等于或大于4RTCCLK值。如果系统时钟(SYSCLK)为LSE或LSI,则RTC时钟必须等于系统时钟(SYSCLK),并且禁用RTC同步机制(置位RTC_CR1寄存器RATIO位)。

 

2、配置RTC时钟源:配置RTC时钟源为LSE,1分频,即32768Hz。

 

3、配置ck_spre时钟; ck_spre时钟,默认1Hz时钟。

(1) 设置7位异步预分频,RTC_APREG:PREDIVA,默认127;

(2) 设置13(Medium)或15位同步预分频,RTC_SPRERx:PREDIV_S,默认255。

即:1Hz=32768/((127+1)(255+1))

 

ck_spre时钟可用于日历和定时唤醒时钟。

 

代码参考

//参数time 秒

void APP_EnterLP(uint32_t time )

{

         MX_GPIO_Init_stop();

 / Enable Ultra low power mode /

          HAL_PWREx_EnableUltraLowPower(); //使能超低功耗

          / Enable Fast WakeUP /

          HAL_PWREx_EnableFastWakeUp();            //使能快速唤醒

           / Disable Wakeup Counter /

         HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);

         

      

      / Clear Wake Up Flag /

        __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

        

    //    HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, (uint32_t)(time 2048), RTC_WAKEUPCLOCK_RTCCLK_DIV16);//rtc LSE=32768k   2048Hz   488us-- 32秒

 

        HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, time-1, RTC_WAKEUPCLOCK_CK_SPRE_16BITS); //wangxl@20190814  时钟选择1Hz  65535/60/60 ~18  可得到的唤醒时间为 1s 到 18h 左右

        

        printf("进入停止模式\r\n");

        

        / Select MSI as system clock source after Wake Up from Stop mode /

        __HAL_RCC_WAKEUPSTOP_CLK_CONFIG (RCC_STOP_WAKEUPCLOCK_HSI);

        

        HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON , PWR_STOPENTRY_WFI);

              

        MX_GPIO_Init();

       

        HAL_Delay(5);  //wangxl@20190814  稳定时钟 必免串口打印乱码

        printf("wake up\r\n");

}

打开CSDN,阅读体验更佳

STM32---RTC实时时钟,随机数发生器和待机唤醒_码字但很菜的博客-CSDN博

void RTC_AlarmSubSecondConfig(uint32_t RTC_Alarm, uint32_t RTC_AlarmSubSecondValue,uint32_t RTC_AlarmSubSecondMask) uint32_t RTC_GetAlarmSubSecond(uint32_t RTC_Alarm); RTC周期唤醒相关函数 void RTC_WakeUpClockConfig(

继续访问

STM32L051低功耗STOP模式下RTC唤醒_TonyIOT的博客_stm32l05

很多MCU都有低功耗模式,以满足对功耗要求苛刻的应用场景。STM32系列MCU的低功耗模式根据其内核与类型的不同也各不相同,网上有很多文章介绍。本文总结下STM32L051的STOP模式,通过RTC唤醒。

继续访问

最新发布 GD32F4—RTC闹钟及自动唤醒中断配置详解

GD32F4RTC闹钟及自动唤醒中断配置

继续访问

STM32RTC休眠唤醒(停机模式)、独立看门狗开启状态下

本文章基于STM32F103RC; 在开启独立看门狗的状态下,进入停机模式,由RTC定时闹钟唤醒系统。 直接上代码: #include "mainh" static void RTC_NVIC_Config(void) { EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructureNVIC_IRQChannel = RTCAlarm_IRQn;

继续访问

stm32f103 RTC周期性待机唤醒(一)_luck_horse的博客

我的RTC初始化部分有个“保存在备份寄存器的RTC标志是否已经被配置过的判断”,如果已经配置过,则进入else部分,但是这个else部分没有“要使能电源时钟,使能备份时钟,取消后备区的写保护”这些配置语句,而待机唤醒后程序从主函数执行,会执行

继续访问

RTC实时时钟_基尔霍夫原来是码农的博客_stm32 rtc 时间

RTC简介 STM32F4的RTC,是一个独立的BCD 定时器/计数器。STM32F4的RTC 提供一个日历时钟(包含年月日时分秒信息)、两个可编程闹钟(ALARM A和ALARM B)中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC 还包含用于管理低功耗模式

继续访问

STM32L031低功耗深度睡眠RTC唤醒注意事项

1 发现进入睡眠后,电流12uA,满足要求。结果唤醒后,第二次进入睡眠后,电流跳到了19uA,且一直保持下去。结果看了>

在使用STM32微控制器时,需要通过配置系统时钟来确保微控制器的正常工作。一般情况下,配置系统时钟是非常重要的,因为它决定了微控制器的主频、计时器、外设和各种时序等参数,以及系统整体性能的稳定性和准确性。

然而,在一些特定的情况下,STM32微控制器可以不用手动配置系统时钟。例如,在某些开发板或参考设计中,已经默认配置好了系统时钟,并将其作为一个预定义的硬件选项。这种情况下,用户只需按照开发板或参考设计的说明书进行连接和调试,系统时钟就不需要再次进行手动配置。

此外,STM32微控制器的一些型号还提供了内部低速晶振,它们可以自动启动并提供一些基本时钟信号 (例如LSI、LSE、HSI和HSE) ,从而避免了手动配置系统时钟的麻烦。这些内部低速晶振的优点在于延长电池寿命、减小电路占用面积、减少成本等方面都有所帮助。

总之,虽然STM32微控制器通常需要手动配置系统时钟,但在某些特殊情况下,可以不用手动配置系统时钟。该决定是否需要手动配置系统时钟,还取决于具体的硬件设计和应用需求。

不会的,这两句用的是位或的方式,前面那句 PLL<<18位,因为 PLL最小是2,所以

这句执行的结果是 影响 CFGR 的第 19位以上,因为 2<<18 相当于 1<<19,所以影响的最小位是19位,后面那句 1<<16,只影响到CFGR的第16位, 两者不在同一区域,所以互不影响

而且,后面的 1<<16位,只能第16位是1,其他位全是 0,跟前面的位或,不会影响其他位

以上就是关于STM32CUBEMX怎么写程序让小灯一开始就是不亮的全部的内容,包括:STM32CUBEMX怎么写程序让小灯一开始就是不亮的、【求助】STM32大神,关于时钟配置函数导致程序跑飞问题。、rtc唤醒日期每天唤醒写什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9732097.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存