STM8 BEEP真是奇怪啊,非得复位一下才行。

2019-07-14 23:15发布

最近调了下STM8的beep,感觉比较麻烦,现在波形是有了,但是程序下载运行后,还的再复位一次才行,求大神指点。
程序如下:
  1. #define BEEP_EN     BEEP_CSR_bit.BEEPEN
  2. #define BEEP_fre    BEEP_CSR_bit.BEEPSEL
  3. #define BEEP_div    BEEP_CSR_bit.BEEPDIV
  4. void BeepInit()
  5. {
  6.   do{
  7.     FLASH_DUKR=0xae;
  8.     FLASH_DUKR=0x56;
  9.   }
  10.   while(!(FLASH_IAPSR&0x08));                //flash 解锁;
  11.   
  12.   FLASH_CR2=0x80;
  13.   FLASH_NCR2=0x7f;
  14.   *((unsigned char *)(0x4803))=0x80;
  15.   *((unsigned char *)(0x4804))=0x7f;                //beep引脚使能;
  16.   
  17.   while(!(FLASH_IAPSR&0x04));
  18.   
  19.   FLASH_IAPSR=FLASH_IAPSR&0xf7;
  20. /*
  21.   PD_DDR_DDR4=1;
  22.   PD_ODR_ODR4=1;
  23.   PD_CR1_C14=1;
  24. */
  25.   BEEP_div=0x1e;
  26.   BEEP_fre=0x01;
  27.   BEEP_EN=1;                                //beep设置;
  28. }
复制代码


先用STVP将芯片全部清空,用IAR单步仿真
第一次全速运行,AFR7没有变化,第二次在仿真就好了,好纠结。


但是这个COO输出都没有设置option byte 可以直接输出波形,

  1. #define COO_EN  CLK_CCOR_bit.CCOEN
  2. #define COO_SEL CLK_CCOR_bit.CCOSEL
  3. void COO()
  4. {
  5.   PE_DDR_DDR0=1;
  6.   PE_ODR_ODR0=1;
  7.   PE_CR1_C10=1;
  8.   
  9.   COO_SEL=10;
  10.   COO_EN=1;
  11.   
  12. }
复制代码


STM8是不是有什么问题啊,
0条回答

一周热门 更多>