完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
前言:我的第一篇博客,快被逼疯了。用的STM8S003F3,耗时5天,问题已解决,结局很坑!
但因为这一个问题,我似乎将stm8的时钟,复位,看门狗,iar的使用几乎全吃透了。 忠告:不要随随便便相信百度里头随便找来的资料! 现象:主频只在16MHz时,程序频繁复位不可控,其他现象异常离奇不阐述了,防止伤脑。 正文:前因后果是这样的: 1、我配置了16M的主频 CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//内部高速时钟,不分频 或者:CLK-》CKDIVR = 0x00; //HSIDIV = 0 CPUDIV = 0 cpu时钟 = 16Mhz 发现它频繁自动复位,复位速度极快,找不到原因,问了老总,老总说复位和IWDG有关。 2、没学过也没设置过看门狗,那就配置吧 大体就是让我配置一下,网上各种配置方法,精简后,所有网上内容都统一为: void IWDG_Init(void) //配置并启动看门狗 { IWDG-》KR = 0xCC; //启动独立看门狗 IWDG-》KR = 0x55; //写入解锁 IWDG-》PR = 0x06; //256分频 IWDG-》RLR = 0xFF; //设置重载寄存器 IWDG-》KR = 0xAA; //锁定并刷新 // IWDG_Enable(); //使能看门狗 // IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //写使能 // IWDG_SetPrescaler(IWDG_Prescaler_256); //预分频256,128KHZ/256 // IWDG_SetReload(0XFF); //设置每次喂狗的计数值。 // IWDG_ReloadCounter(); //喂狗 } 操作寄存器和库函数都有了,而且是不出错的 void WDT(void)//喂狗 { IWDG-》KR = 0xaa; } 定期喂狗即可,LSI的256分频大概1秒左右喂一次狗,不喂就复位,看起来就很简单了 3、我真心是为了解决问题把独立喂狗IWDG都快吃透了,保证看门狗配置绝对没问题了,复位问题还是没解决! 正常情况,看门狗是可要可不要的,不是说开机就会自动初始化(老总的隐形误导)。 如果我初始化看门狗了,看门狗也应该1秒复位一次,可我1秒复位n多次,那说明跟看门狗无关 4、排查发现,又跟时钟有关 CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2);//内部高速时钟,分频2; 分频2,4,8,程序不再复位了,就是说16M会自动复位,8M以下就不复位了?可我就是要16M啊 手册说,看门狗用LSI,我主频用HSI,互相不影响吧?(互不影响) 5、快疯了,要交差,半路出现问题搞不定 把代码全删了,只留了几句话 CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//内部高速时钟,不分频 GPIO_Init(Laser_V1_Port, (GPIO_Pin_TypeDef)Laser_V1_Pin, GPIO_MODE_OUT_PP_LOW_SLOW); //灯亮 int i=1000; GPIO_WriteHigh(Laser_V1_Port,Laser_V1_Pin); while(i--); GPIO_WriteLow(Laser_V1_Port,Laser_V1_Pin); while(1) { } 按照逻辑,开机亮一下啊,可我现在一直会亮,(因为它复位了) 找了个别人的demo试试,还是一样,但是用别的STM8开发板试了就没事! 6、最终发现while(1){}去掉,则不再复位了,while(1){}不去掉,灯还是不停的闪 靠,这根本不是复位,而是灯闪的操作被莫名循环了,不是复位导致的!!!!靠,拍电影啊,这么弯弯绕! 7、问题没发现,但是问题已解决,那就是: main()函数中,如果while(1)是空的,会执行while(1)意外的代码?不要让while(1)空着就行 这TM什么鬼,明明技术贴,搞得跟走近科学一样(中间过程忽略) 8、最后一天,都快放弃了,最后猜想是不是硬件问题?!内心思路:跟硬件有毛关系啊! 最终:Vcap将它的电容从103改为105,复位问题奇迹般不再发生了(1uF)。 为什么我就选了103?!啊?因为我特么从网上百度随便找了个百度文库照抄的!坑啊!(NRST也没加电容!) |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
645浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
516浏览 3评论
532浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
505浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 11:01 , Processed in 1.041527 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号