先说明我使用的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交流供电,用继电器控制外部电机负载设备,我想请教下,出现这种问题可能是什么原因,是否和配置有关 |
求一个STM8S207例程
初次接触STM8,请问在STVD中,为什么这个Struct会报错
STMS005K6T6 如何采集内部参考电压。
stm8s003 adc中断和通道切换的问题
adc施密特触发器stm8
stm8l051f3 TSSOP20 封装,待机模式下,2天后,电流突然增加到140UA
STM8S用STVP烧录怎么加密?
如何使用ST官网例程_LIN总线通讯_STM8AF
STM8 LIN
IAR代码编辑太费劲了,想问一下有没有好的方法,试了VScode但是头文件老是报错,调了很久也没调好,想换个方法了。
评分
查看全部评分
看门狗设定时间是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
}
评分
查看全部评分