在STM32F4上获得秒事件
众所周知,STM32F4系列取消了F1上才有的秒中断,如果在百度上搜索“STM32F4 秒中断” ,第一条结果就会显示一个AI生成的结果,显示如下:
上面的图片就是我直接截图的,用的头文件是F4的,但是定义的中断却是F1的,这简直就是极大的误导,因为F4上根本没有RTC_IRQ,这说明当下的所谓的AI,特别是百度这类骗钱的公司,充其量也就是找个结果复制粘贴而已,想要达到替代人类的地步,是完全没可能的,也就骗骗没知识的人罢了,特别是一旦涉及到专业领域,AI结果简直是漏洞百出,我大胆预测10年内,所谓的AI将沦为娱乐项目。
不啰嗦了,我就是来告诉大家,在F4上到底应该怎样实现一个秒中断或者是事件。这方面其实很多例程中已经给出了完整的代码,其实就是使用了定时唤醒事件中断的功能。在这里我想只要简化的代码,用最少的几句话就实现他。
void RTC_Set_WakeUp(u32 wksel,u16 cnt)
{ EXTI_InitTypeDef EXTI_InitStructure; RTC_WakeUpCmd(DISABLE);//关闭WAKE UP RTC_WakeUpClockConfig(wksel);//唤醒时钟选择 RTC_SetWakeUpCounter(cnt);//设置WAKE UP自动重装载寄存器 RTC_ClearITPendingBit(RTC_IT_WUT); //清除RTC WAKE UP的标志 //RTC_ITConfig(RTC_IT_WUT,ENABLE);//开启WAKE UP 定时器中断RTC_WakeUpCmd( ENABLE);//开启WAKE UP 定时器
}
调用方法:
RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,1);//产生1秒一次的RTC_FLAG_WUTF事件,
然后就可以通过中断的方式,或者查询的方式:
if(RTC_GetFlagStatus(RTC_FLAG_WUTF)==SET)
{
....
RTC_ClearFlag(RTC_FLAG_WUTF);
}
得到中断事件了。
大部分的例子给出的都是中断+唤醒的代码,将不需要的唤醒代码去掉就行了。
最后,我再次强调,AI不靠谱,AI没有真才实学,用AI的人会失业,设计AI算法的人才有真才实学,他们永远不会失业。