今天做一个万年历的蜂鸣器,使用STM8s105C4T6,使用单片机自带的蜂鸣器模块,从昨天就没弄出来,用IO口加delay可以驱动蜂鸣器,但是使用单片机内部BEEP模块从PD4上始终得不到脉冲信号,在网上找了很多资料,21IC貌似也很多人遇到相同问题。。刚才刚刚把它弄响,分享一下自己的方法。。
BEEP部分代码,
void BeepInit( void )
{
PD_DDR |= BIT4;//设置为输出
PD_CR1 |= BIT4;//设置为推挽输出
PD_CR2 |= BIT4;//速率为10M
BEEP_CSR = 0x3E;
}
代码很简单,设置PD4为输出,然后设置BEEP寄存器,
[imgid=0]
上边为设置对应的寄存器说明。
然后就是很关键的;;;我是在IAR环境中,使用STLink进入仿真,进入仿真后不能点运行哦,,然后点击菜单栏ST-Linlk ->Option BYTES
进入如下设置框
然后选择AFR7 在这一行点右键,Alternate Active选这个,然后点OK,就行了。。
然后复位一下,就可以了。。 |