一:PWM工作过程内容补充(非电路内容)
1.计数器从0往上计数,与CCRx寄存器比较,比他小的时候输出低电平,比他大的时候输出高电平,不断循环,产生了PWM的脉宽调制信号。 2.周期由ARR决定(与定时器时钟有关) 3.占空比由CCRx决定的,以图为例,如果CCRx很小,那么对应下来的低电平就很短;如果CCRx很大,那么对应下来的低电平就很长
二:RTC(实时时钟 简单了解一下就好了)
1. 独立定时器 拥有一个连续计数的计数器 提供时钟日历功能。 2. 修改计数器值可以重新设置当前时间和日期
RTC 时钟源和时钟操作函数:
void RCC_RTCCLKConfig(uint32_t CLKSource);//时钟源选择
void RCC_RTCCLKCmd(FunctionalState NewState);//时钟使能
RTC配置函数(预分频 计数值):
void RTC_SetPrescaler(uint32_t PrescalerValue); 预分频配置
void RTC_SetCounter(uint32_t CounterValue); 设置计数器值
void RTC_SetAlarm(uint32_t AlarmValue); 闹钟设置
RTC中断设置函数:
void RTC_ITConfig(uint16_t RTC_IT,FunctionalState NewState);
RTC允许配置和退出配置函数
void RTC_EnterConfigMode(); 允许RTC配置
void RTC_ExitConfigMode(); 推出配置模式
同步函数
void RTC_WaitForLastTask(); 等待上一次操作完成
void RTC_WaitForSynchro(); 等待时钟同步
相关状态位获取清楚函数:
FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG);
void RTC_ClearFlag(uint16_t RTC_FLAG);
ITStatus RTC_GetITStatus(uint16_t RTC_IT);
void RTC_ClearITPendingBit(uint16_t RTC_IT);
其他函数
PWR_BackupAccessCmd(); BKP后备区域访问使能
RCC_APB1PeriphClockCmd(); 使能PWR BKP 时钟
RCC_LEKConfig(); 开启LSE RTC选择LSE作为时钟源
uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR); 读BKP寄存器
void BKP_WriteBackupRegister(uint16_t BKP_DR,uint16_t Data); 写BKP
RTC配置一般步骤
三: SysTick系统时钟(了解)
1. 系统时钟SYSTICK可来源于三个时钟源 [1] HSI振荡器时钟 [2]HSE振荡器时钟 [3]PLL时钟
2.任何一个外设在使用之前,必须首先使能其相应的时钟
3.重要的时钟 [1]SYSTICK系统时钟 [2]AHB总线时钟 [3]APB1总线时钟(低速) [4]APB2总线时钟(高速) [5]PLL时钟
4.系统滴答定时器
中断的方式实现delay延迟
static __IO uint32_t TimingDelay;
void Delay(__IO uint32_t nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);//等待中断
}
void SysTick_Handler(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
int main(void)
{ …
if (SysTick_Config(SystemCoreClock / 1000)) //systick时钟为HCLK,中断时间间隔1ms
{
while (1);
}
while(1)
{
Delay(200);//2ms
…
}
}