接触STM32有接近一个月的时间了,本来开始是不喜欢也不屑在这个板子的开发的,因为都用现成的封装库开发,但是在实习期间,觉得能多学点什么就学点什么吧。
最近在项目中,还真有些零零碎碎的问题找上头来,解决后也算长了经验吧,当然特别对于我这种大三没一点工作经验的人来说还好。
其中一个问题,在读取引脚电平的时候,很简单,就调用gpio_readinputdata()读取电平,返回值是一个16bit的值,其中有效的只是高八位,然后根据值的状态是否变化发送一些数据,在开始的版本中,一点问题都没有,后来一个版本就出现问题了,它会一直不断发数据。原因是:早期版本,我习惯性把返回值&0xff00,取前八位,后来的版本省略了这步,所以导致了整个值状态一直在变化,变化的是低八位.....问题很小,可是突然想起,保持一个好的编程习惯和编程技巧,就像取哪些位的值就&上那些位,或许可以省掉很多错误。。。
另外有个小问题,是在做一个东西的处理时,需要读取接入端的电平脉冲,就跟按键一样,本来也是很简单的,一下子就搞定。可是在实际测试中,问题来了,开始启动就会无缘无故出现一个脉冲,这个脉冲是怎么来的呢?原来,那类器件一半是初始高电平的,所以我采取低电平到高电平的跳变来做处理,而刚好我那个两个独特些,初始默认低电平,所以我开始就会出现一个跳变,于是,解决方案出来,在初始化的时候,读取那个引脚的电平,然后再做变化处理。。。弄好又测,问题还是有,这是怎么回事呢?。。。看了看硬件连线,发现了又一个问题,原来,器件有个地方是连接在单片机上的,每次重启都一起关电源重启,单片机初始化,器件也初始化,但是,单机击在初始化的时候,很快的速度就读取了器件的初始电平,那个电平跟实际中器件的电平不一样。。。解决办法很简单,单片机初始好,延迟一点时间,再读取器件引脚电平。。。搞定...