首先,F030与F072的RTC唤醒功能是不一样的,在相关定义文件stm32f0xx_exti.h中有如下定义:
#define EXTI_Line17 ((uint32_t)0x00020000) /*!< Internal interrupt line 17
Connected to the RTC Alarm
event */
#define EXTI_Line20 ((uint32_t)0x00100000) /*!< Internal interrupt line 20
Connected to the RTC wakeup
event, only applicable for
STM32F072 devices */
也就是最好用最正宗的RTC唤醒功能(EXTI_Line20)只能用在F072上,不能用于F030,所以只能使用RTC Alarm( EXTI_Line17) 方式来唤醒RTC。
RTC设置流程如下:
1.初始设置RTC的秒时钟:
RTC_InitStructure.RTC_AsynchPrediv
RTC_InitStructure.RTC_SynchPrediv
计算方法:LSI=40000HZ;
LSI/(RTC_AsynchPrediv+1)/(RTC_SynchPrediv +1) =1
2.开启RTC中断及NVIC
/* EXTI configuration */
EXTI_ClearITPendingBit(EXTI_Line17);
EXTI_InitStructure.EXTI_Line = EXTI_Line17;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
NVIC_InitStruct.NVIC_IRQChannel = RTC_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
3.每次进入休眠之前,都要设置闹钟RTC Alarm
RTC_AlarmStructure.RTC_AlarmTime.RTC_H12 = RTC_H12_AM;
RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours = 0x01;
RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes = 0x00;
RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds = nDelayCNT;//0x05;
RTC_AlarmStructure.RTC_AlarmDateWeekDay = 0x31;
其中nDelayCNT就是需要达到的唤醒时间长度,单位是秒(s).
至此,就算是把RTC唤醒搞定了 ,当然还有包括其他比如时钟RCC的设置,暂时以官方例程为准
上一篇:STM32F030 使用引脚输入
下一篇:stm32f030cc 替换 stm32f030c8 后程序下载失败问题
推荐阅读
史海拾趣
求助 用TIM1 产生PWM波,OC1 互补输出OC1N,OC2互补输出OC2N 产生0.5占空比的PWM波以后,我开启TIM2的时钟完成别的功能。TIM1的波形马上就变成占空比为1的PWM波了 也就是说互补输出没有了。。… 查看全部问答∨ |
|
这个是自己的。很难看,想要一个这样的。 请有的坛友给我一个。先谢谢了。。。。 [ 本帖最后由 fendou 于 2012-11-27 08:32 编辑 ]… 查看全部问答∨ |
|
最近在做一个项目,我负责的部分是通过控制一级放大器来控制增益但是控制增益又是需要控制运放的反馈电阻,所以我想知道如何用单片机控制的dac得出的电压来控制THS7001的增益呢?先谢过!… 查看全部问答∨ |