最近调了下STM8的beep,感觉比较麻烦,现在波形是有了,但是程序下载运行后,还的再复位一次才行,求大神指点。
程序如下:
- #define BEEP_EN BEEP_CSR_bit.BEEPEN
- #define BEEP_fre BEEP_CSR_bit.BEEPSEL
- #define BEEP_div BEEP_CSR_bit.BEEPDIV
- void BeepInit()
- {
- do{
- FLASH_DUKR=0xae;
- FLASH_DUKR=0x56;
- }
- while(!(FLASH_IAPSR&0x08)); //flash 解锁;
-
- FLASH_CR2=0x80;
- FLASH_NCR2=0x7f;
- *((unsigned char *)(0x4803))=0x80;
- *((unsigned char *)(0x4804))=0x7f; //beep引脚使能;
-
- while(!(FLASH_IAPSR&0x04));
-
- FLASH_IAPSR=FLASH_IAPSR&0xf7;
- /*
- PD_DDR_DDR4=1;
- PD_ODR_ODR4=1;
- PD_CR1_C14=1;
- */
- BEEP_div=0x1e;
- BEEP_fre=0x01;
- BEEP_EN=1; //beep设置;
- }
复制代码
先用STVP将
芯片全部清空,用IAR单步
仿真,
第一次全速运行,AFR7没有变化,第二次在仿真就好了,好纠结。
但是这个COO输出都没有设置op
tion byte 可以直接输出波形,
- #define COO_EN CLK_CCOR_bit.CCOEN
- #define COO_SEL CLK_CCOR_bit.CCOSEL
- void COO()
- {
- PE_DDR_DDR0=1;
- PE_ODR_ODR0=1;
- PE_CR1_C10=1;
-
- COO_SEL=10;
- COO_EN=1;
-
- }
复制代码
STM8是不是有什么问题啊,
一周热门 更多>