先说明我使用的ic是stm8s003f3系列的,使用到内部资源有epprom,定时器1,adc1,看门狗;之前在测试时候发现两个问题:第一,flash操作时间过长导致看门狗直接复位,第二,adc功能开启后会出现按键采集失败。两个问题分别解决方式是在flash操作中加入看门狗,adc初始化重新调整,两部分代码如下:flash操作部分 void eeprom_write(unsigned long addr,unsigned char num) { FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA); //确保前面的操作完成 // FLASH_Unlock(FLASH_MEMTYPE_DATA); //解锁写保护 FLASH_ProgramByte(addr,num); FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA); //等待操作完成 // FLASH_Lock(FLASH_MEMTYPE_DATA); //写保护 } void write_DATAFLASH_BUF(u16 u16_addr,u8 *dataBuf,u8 iLength) { u8 i; FLASH_Unlock(FLASH_MEMTYPE_DATA); //解锁写保护 for(i=0;i<iLength;i++) { // eeprom_write(u16_addr+i,*(dataBuf+i)); FLASH_ProgramByte(u16_addr+i,*(dataBuf+i)); IWDG_ReloadCounter();//喂狗 } FLASH_Lock(FLASH_MEMTYPE_DATA); //写保护 } adc修改部分 ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, NTCADC_Channe4, ADC1_PRESSEL_FCPU_D2, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_ALL, ENABLE); 使用以上两个修改方案后,可以正常读写epprom数据,adc采样和按键检测也不冲突,在内部测试没有发现问题,但是拿到客户现场,缺出现跑着跑着单片机复位了,说明下,设备是24v交流供电,用继电器控制外部电机负载设备,我想请教下,出现这种问题可能是什么原因,是否和配置有关 |
测试标签123
IAR FOR ARM和IAR FOR STM8无法共存,
STM8L052,液晶内部电源怎么用?
STM8S103飞线外接芯片,I2C不能得到slaveAddress应答,通讯失败。
STM8S105C6T6 UART2串口,能接收数据,不能发送数据
STM8S105K4 串口2 无奇偶校验,也能接收 偶校验的 数据
在STM8S的IAP使用中断和APP使用中断问题
STM8L151 SMBUS设计
STM8S103F复位异常
STM8L的LCD调试时不亮
评分
查看全部评分
看门狗设定时间是0.5s
void IWDG_Config(void)
{
#if 0
IWDG_Enable();//使能看门狿
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//写使胿
IWDG_SetPrescaler(IWDG_Prescaler_256);//预分颿56,128KHZ/256
IWDG_SetReload(0XFF);//设置每次喂狗的计数值?56*250/128000=0.5s
IWDG->KR = 0xaa;//锁定并刷新
#else
IWDG->KR = 0xcc;//启动独立看门狗
IWDG->KR = 0x55;//写入解锁
IWDG->PR = 0x06;//256分频
IWDG->RLR = 0xff;//设置重载寄存器
IWDG->KR = 0xaa;//锁定并刷新
#endif
}
评分
查看全部评分