z4057 发表于 2015-8-11 21:41:29

STM8S003K3 Beep功能启用不了 程序如下 请高人指点

STM8S003K3BEEP_CSR 写不动 Beep功能启用不了

ST Visual Programmer OPTION BYTE里也没有 PD4复选beep功能

CKAWUSEL高低速都试过了
LSI_EN       开关都试过了
CLK_ICKR=0x0d;   // 上电后 LSI 开启了


void initBeep(void)
{
    pointEEP=(uchar *)0x4803;
   EEPvalue=*pointEEP;
   if((EEPvalue&0x80)==0)
   {
       do
      {
         FLASH_DUKR=0xae;
         FLASH_DUKR=0x56;
      }while((FLASH_IAPSR&0x08)==0);//(!(FLASH_IAPSR&0x08));
      FLASH_CR2=0x80;
      FLASH_NCR2=0x7f;
   
   *((uchar *)0x4803)=0x80;
   //while((FLASH_IAPSR&0x04)==0);
   *((uchar *)0x4804)=0x7f;
   
   while((FLASH_IAPSR&0x04)==0);//(!(FLASH_IAPSR&0x04));
                               //bit7 NC =0;
                               //bit6 HVOFF:高压结束标志0=HV开,开始真正的编程;1=HV关,高压结束
                              //bit5~4 NC =0;
                               //bit3 DUL:EEP解锁标志 0=DATA EEPROM写保护使能;1=不能写DATA EEPROM区,需要通过FLASH_DUKR 写0x56+0xae 来解除 硬件置位;软件清0xae
                               //bit2 EOP:编程结束标志0=没有EOP事件发生;1=有EOP事件发生:如果FLASH_CR1中的IE=1;将有中断产生
                              //bit1 PUL:快速程序存储结束标志0=主程序写保护使能;1=需要通过FLASH_PUKR 来解除 硬件置位,软件清0
                               //bit0 WR_PG_DIS:试图向被保护页进行写操作的标志;0=没有WR_PG_DIS事件发生;1=有事件发生 如果IE=1则会产生中断
   FLASH_IAPSR&=0xf7;
    }

    BEEP_CSR=0x0e;    //0x50f30x1fBEEP控制/状态寄存器
                           //bit7~6BEEPSEL:蜂鸣器频率选择 00=输出Fls/(8*BEEPdiv)kHz; 01=输出Fls/(4*BEEPdiv)kHz; 1x=输出Fls/(2*BEEPdiv)kHz;
                              //bit5    BEEPEN:蜂鸣器允许位:'1'=使能蜂鸣器功能
                           //bit4~0BEEPDIV: 蜂鸣器预分频器 0~1e >> BEEPdiv=2;3;4;...32; 0x1f不能设置 会无输出
    BEEP_CSR=0x8e; // BEEP_CSR|=0x80;
   BEEP_CSR=0xae;// BEEP_CSR|=0x20;
}

程序强行把 OPT2改为 0x80 也不行
请大家帮个忙
是 STM8S003K3 硬件上没有Beep功能还是 程序上哪里没有开

页: [1]
查看完整版本: STM8S003K3 Beep功能启用不了 程序如下 请高人指点