什么原因导致STM8S写死呢?
这几天玩STM8S103F3P6,各个模块调试挺顺利的,直到昨天配置OptionBytes出了问题1. 完成了PWM输出,手动设置的50%占空比
2. AD采样也验证了,通过串口打印到PC端
这算是V1.0版本吧
以上两步完成后,打算用AD采样的结果控制PWM输出的占空比,就加了一句“TIM1_SetCompare1(ADC_Value * 2);”
然后PWM输出没有了,串口输出没有了,记做V1.1版本
心想是哪里进入了死循环吧,奇怪的是返回到V1.0版本后,PWM和串口输出也一样没有了
怀疑是不是操作不当,一不小心把STM8烧了。。。
今天又拿了同样一块板子,先用V1.0版本试了,AD采样正常,串口输出正常
然后写入配置字节,“TIM1_SetCompare1(ADC_Value * 2);”。。。
好吧,同样的“死机”又出现了,啥都没有了,返回到V1.0也什么都没有
这两片板子这么都没法工作了,像是STM8坏了一样,但是个人感觉不会这么脆弱,应该是自己哪里没注意到,所以到论坛里求助过路的大侠
拜求指点!!!
附:配置字节的写入代码
FLASH_DeInit();
FLASH_Unlock(FLASH_MEMTYPE_DATA);
FLASH_ProgramOptionByte(0x4801, 0x00);
FLASH_ProgramOptionByte(0x4803, 0x01);
FLASH_Lock(FLASH_MEMTYPE_DATA);
本帖最后由 tovax 于 2016-8-2 15:58 编辑
PC: WIN7 32bit
IDE: STVD
Compiler: COMIC
Programmer: STVP内置的Light Programmer
stm8应该没有坏,因为一直可以正常烧录,只是没有任何功能
:handshake 解决:OptionBytes的问题 操作字节,毕设的时候遇到了。 两种办法:
1,STVP里面修改;
2,软件修改去操作选项字节。
可以参考这个链接:http://www.07net01.com/2015/07/879456.html。 你这个选项字节最后怎么写对的。我也遇到这个问题。
void Config_GPIO_Option(void)
{
#define AFR_ADDR(0x4803)
#define TIMER1PWMSELECT (0x01)
uint16_t temp = 0;
/* Define FLASH programming time */
FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
//first unlock
FLASH_Unlock(FLASH_MEMTYPE_DATA);
FLASH_EraseOptionByte(AFR_ADDR);
while(!(FLASH_GetFlagStatus(FLASH_IAPSR_DUL)));/*等待解锁完毕*/
temp = FLASH_ReadOptionByte(AFR_ADDR);
while(!(FLASH_GetFlagStatus(FLASH_IAPSR_DUL)));/*等待解锁完毕*/
FLASH_ProgramOptionByte(AFR_ADDR,TIMER1PWMSELECT);//
temp = FLASH_ReadOptionByte(AFR_ADDR);
FLASH_Lock(FLASH_MEMTYPE_DATA);
} 如果用到了引脚的第二功能,要设置选项字。选项字可以在程序中设置,也可以在STVP烧写软件中设置。 这个经验值得学习
页:
[1]