今天我们来学习beep资源。
beep,也就是蜂鸣器。
蜂鸣器一般分两种,有源蜂鸣器和无缘蜂鸣器。
有源蜂鸣器是内部带频率发生器的,能发出特定的声音,只要供电就行。
无源蜂鸣器就是不带频率发生器的,需要外部提供频率驱动信号,蜂鸣器的声调由驱动信号的频率决定,能发出不同的声音,甚至是音乐。
beep资源就是一种简单配置就能输出蜂鸣器驱动信号的外设资源。简单到只需要配置一个寄存器。
先看看结构
这个时钟来源跟AWU一样,可以由外部时钟分频或者内部LSI提供。
时钟选定后成为LS时钟,然后经过两次分频得到beep时钟。
配置流程如下
这里的校准频率一般不需要。
看看需要配置的寄存器
这个寄存器就控制了beep输出的频率和开关,十分方便。
当然beep引脚为第二功能,想使用还得配置选项字节和端口模式。
beep输出也要经过驱动电路才能驱动蜂鸣器,简单的就是通过三极管驱动。
beep也可以当做一个时钟输出引脚用,方便的得到频率较低的时钟源。
下面是几种时钟频率的输出
1K
8K
10K
频率有些误差,有些是因为计算不能整除,有些是内部RC震荡的误差。
很简单,还是贴上代码。
- #include<iostm8s105k4.h>
- void init()
- {
- PD_DDR_DDR4=1; //输出口配置
- PD_CR1_C14=1;
- PD_CR2_C24=1;
-
- BEEP_CSR=0x61; //BEEP配置
- }
- int main( void )
- {
- init();
- while(1);
- }
THE END!