ARM学习总结1->寄存器初始值问题

今天调了一上午ADC实验都没出效果,调试发现一直停留在while(rADCCON & ADC_START);总是出不来。开始以为是ADC_Convert转换函数不对,仔细检查没发现问题,再考虑可能是初始化函数不对, 所以AD转换不能真正开始,但是自己核对和别人可行的代码,查书,也没有发现有什么错误,无奈之下,只能把别人可行的代码一段一段替代我的代码,再运行看效果,把JustDo的初始化函数 替代我的初始化函数Init_ADC,发现效果出来了,太Happy了,锁定问题就一定出在Init_ADC函数啦。  但是还有一个问题就是我的几乎和他的一模一样啊,怎么他的能出来,我的出不来了?再仔细分析  代码我的是rADCCON = (PRESCALE_EN | PRSCVL49 | CHANNEL0) ; 他的是rADCCON = (channel<<3) | (preScaler<<6) | (1<<14); 看了又看只有他的值直接赋给ADCCON寄存器,而我是或给它的。此刻!我完全清晰啦,肯定是ADCCON  上电初始value不是0。如果是或的话保留了其他值的其他位,这样肯定和你想要的设置不同啦。 查手册发现初始值真的不是0,而是0x3fc4。犯这个错误根本原因就是自己想当然了,没有仔细看手册,   并不是所有的寄存器初始value就是0。

这个问题把我纠结了一上午,最后出来了,也要总结一些经验教训啦,出了问题,在查手册,检查实在发现不了误的情况下,可以把别人可行的代码按模块一步一步替代自己代码,在一步一步仿真看效果,到那里出效果啦,也就知道自己代码问题出那里了,也许看起来就是一模一样,但它也只是看起来一样而已,肯定有些许不同,那些许不同就是自己最容易犯的错误,也是自己平时最容易忽略的。当然这是最后的杀手锏啦,之前还得自己反复调试才行啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值