2410BEEP.c
上传用户:mhstny
上传日期:2022-08-05
资源大小:793k
文件大小:1k
源码类别:

微处理器开发

开发平台:

Unix_Linux

  1. #include "2410addr.h"
  2. #include "2410lib.h"
  3. #include "def.h"
  4. /****************************************************************************
  5. 【功能说明】蜂鸣器PWM测试
  6. ****************************************************************************/
  7. void Buzzer_Freq_Set( U32 freq )
  8. {   
  9. rGPBCON = rGPBCON & ~(3<<0)|(1<<1);//set GPB0 as tout0, pwm output
  10. rTCFG0 = rTCFG0 & ~0xff|15; //prescaler = 15
  11. rTCFG1 = rTCFG1 & ~0xf|2;//divider = 1/8
  12. rTCNTB0 = (PCLK>>7)/freq;//rTCNTB0=PCLK/{(prescaler+1) * divider *freq}
  13. rTCMPB0 = rTCNTB0>>1; //占空比50%
  14. //disable deadzone, auto-reload, inv-off, update TCNTB0&TCMPB0, start timer 0
  15. rTCON = rTCON & ~0x1f|(0<<4)|(1<<3)|(0<<2)|(1<<1)|(1);
  16. rTCON &= ~(1<<1); //clear manual update bit
  17. }
  18. void Buzzer_Stop( void )
  19. {
  20. rGPBCON &= ~12; //set GPB1 as output
  21. rGPBCON |= 4;
  22. rGPBDAT &= ~1;
  23. }
  24. void Buzzer_PWM_Run( void )
  25. {
  26. U16 freq = 2000 ;
  27. Buzzer_Freq_Set( freq ) ;
  28. }