📄 beep.c
字号:
/*****************************************************************************
*** 函数名:void Beep(uint32 freq, uint32 ms)
*** 输入参数:freq--蜂鸣器频率;ms--蜂鸣时间
*** 输出参数:无
*** 硬件连接:TOUT1(GPB1)通过二极管接蜂鸣器
*** 相关控制器:定时器控制器(TCON),预分频器(TCFG0),分频器(TCFG1)
*** 定时器缓冲寄存器(TCNTB1),定时器比较寄存器(TCMPB1)
*****************************************************************************/
#include "config.h"
void Beep (uint32 freq,uint32 ms)
{
rGPBCON &= ~(3<<2); //设置GPB1为TOUT1功能
rGPBCON |= (0x2<<2);
rTCFG0 &= ~0xff;
rTCFG0 |= 15; //prescaler = 15+1
rTCFG1 &= ~0xf;
rTCFG1 |= (0x2<<4); //mux = 1/8
rTCNTB1 = (PCLK>>7)/freq;
rTCMPB1 = rTCNTB1>>2; // 50%
rTCON &= ~(0x1f<<8);
rTCON |= 0xb<<8; //disable deadzone, auto-reload, inv-off, update TCNTB0&TCMPB0, start timer 0
rTCON &= ~(0x2<<8); //clear manual update bit
OSTimeDlyHMSM(0,0,0,ms);
rGPBCON &= ~(0x3<<2); //set GPB0 as tout0, pwm output
rGPBCON |= (0x1<<2);
rGPBDAT &= ~0x2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -