目的
了解stm32 systic定时器和蜂鸣器的相关操作
systick介绍
SysTick 定时器也叫 SysTick 滴答定时器,它是 Cortex-M3 内核的一个外设, 被嵌入在 NVIC 中。它是一个 24 位向下递减的定时器,每计数一次所需时间为 1/SYSTICK,SYSTICK 是系统定时器时钟,它可以直接取自系统时钟,还可以通 过系统时钟 8 分频后获取,本套程序中我们采用后者,即每计数一次所需时间为 1/(72/8)us,换句话说在 1us 的时间内会计数 9 次。因此可以根据systic递减次数就可以得出所花费的时间。
systick 定时器寄存器介绍
- CTRL寄存器
-
LOAD寄存器(从装载初值)
-
VAL寄存器()
systick定时寄存器操作(以内部时钟源,延时微妙级别来介绍)
- 设置SysTick定时器的时钟来源,这一步再初始化函数中初始化函数中
SysTick_CLKSource(SysTick_CLKSource_HCLK_Div8) //时钟为9MHz
- 设置SysTick定时器的重装初始值
SysTick->LOAD=nus*fac_us;
- 清零SysTick定时器当前计数器的值
SysTick->val=0x00;
- 打开SysTick定时器(操作最低位)
SysTick->CTRL |= 1; //没有直接等于1,是为防止其他位变为0而产生干扰
函数编写(其他按照普中函数一样)
int main()
{
SysTick_Init(72);
LED_Init();
//RCC_HSE_Config(RCC_PLLSource_HSE_Div2,RCC_PLLMul_9);//36MHz
while(1)
{
delay_ms(500);
LED1=0;
delay_ms(500);
LED1=1;
}
}
实验结果
DS0(LED灯)以1s为周期闪烁
蜂鸣器
- 分为 压电式蜂鸣器(无源,无震荡电路,需要提供频率信号)和电磁式蜂鸣器(有缘,有震荡电路,只需要提供电源),本开发板使用的是有源蜂鸣器
- 原理图所在位置
GPIOB第八个脚
- 操作按照要求就会得出于LED相同效果(蜂鸣器以1s为周期鸣叫)