
STM32F103长时间运行,串口发送失败
STM32G474 BOOST电路双环PID的用法
foc2.0函数SVPWM_3ShuntCalcDutyCycles看不明白
stm32f103c8t6:没有对flash进行任何操作,flash的内容发生变化了。具体是哪些原因?如何调试排查原因。
STM32F103C8T6 TIM1 CH2输入捕获触发DMA的问题
STM32会存在单个IO口坏掉的情况吗?
STM32F103RET6 FLASH擦除失败问题
6.28周六签到打卡
请问有stm32f103驱动无刷电机的学习资料吗,找了很久都没有找到
stm32编码器模式计数问题
如果用流行的CUBE库,那么从应用层看就会简单的多。这个库里面有例程可以参考。
STM32Cube_FW_F1_V1.8.0\Projects\STM32F103RB-Nucleo\Examples\RTC
在使用本函数前必须先调用函数 RTC_WaitForLastTask(),等待标志位RTOFF 被设置
这个我试了一下,发现手册写错了,
手册是这样的
例:
/* Wait until last write operation on RTC registers is terminated */
RTC_WaitForLastTask();
/* Sets Alarm value to 0xFFFFFFFA */
RTC_SetAlarm(0xFFFFFFFA);
但实际上应该是这样的
/* Sets Alarm value to 0xFFFFFFFA */
RTC_SetAlarm(0xFFFFFFFA);
/* Wait until last write operation on RTC registers is terminated */
RTC_WaitForLastTask();
调换一下就好了,这是为啥,很奇怪
其中,计数值修改为这个RTC_GetCounter()
刚才最后的针对RTC寄存器的写操作完成了。换言之,开启新的RTC写操作时要保证没有前次没完成的
写操作。
反正你保证每次做RTC寄存器写操作前保证该位置1才可以。这是关键点。
下面F1标准库例程的部分代码:
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask(); ///START
/* Enable the RTC Second */
RTC_ITConfig(RTC_IT_SEC, ENABLE);
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask();
/* Set RTC prescaler: set RTC period to 1sec */
RTC_SetPrescaler(32767);/* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask(); //END
你现在觉得这样写没有问题:
/* Sets Alarm value to 0xFFFFFFFA */RTC_SetAlarm(0xFFFFFFFA);/* Wait until last write operation on RTC registers is terminated */
RTC_WaitForLastTask();
你写前没有查RTCOFF标志,有可能你写时该位置1了,即没有未完成的RTC写操作。
然后再调用RTC_WaitForLastTask();也是合理的、保险的,保证该写操作顺利完成。
因为看不到你的代码,不知你后面还有些什么代码。