完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
学习一款单片机,如果我们知道了它的底层原理,也就是能看懂并且会运用芯片手册,那么掌握一块芯片就变得相对容易了许多,哪里不懂查哪里。将底层代码封装成函数,那么可读性则大大增加,移植也方便。
大多数时候,我们使用封装好的库函数,用起来方便且省时。就如stm32电亮一个小灯,用寄存器通过地址的偏移也能实现,用库函数对引脚的配置也能实现,看起来操作寄存器的方法代码量反而较少,但对于其他人来说就不这么友好了,不看芯片手册,很难知道这是啥。以前没有了解单片机的底层原理的时候,我用每一个函数都是虚的。在了解了一些微机原理的知识后,再结合手册,我就喜欢将每一个封装好的函数一探到底,再和芯片手册上一对比,这样我用每一个函数时就有底气了。 单片机往往是和传感器配合使用,不论是单总线,I2C,或者SPI通信的传感器,在手册里是没有现成的代码的,但它会给你时序图,但这也就够用了。将时序图直接转换为代码的能力我觉得掌握起来很难,而且网上代码也很多,会读会改就行了。也许看出经验之后自然就会了。 想当初我最纠结的点在于,万一换个stm32芯片程序是不是就不能用了,现在看来是非常可笑的。当把几块f1系列芯片最小系统原理图拿出来看了一下后,再结合芯片手册看了一下,芯片的区别就在于扩展了多少引脚出来,而P_ABCDEFG的基地址和偏移量是没有变的,就好比修很多栋楼,有高有低,但是都是同一平面,固定层高的。所以我们拿到一个芯片的时候,一定要把它的名字搞清楚,就比如STM32C8T6: |
|
|
|
只有小组成员才能发言,加入小组>>
3254 浏览 9 评论
2937 浏览 16 评论
3439 浏览 1 评论
8941 浏览 16 评论
4030 浏览 18 评论
1072浏览 3评论
556浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
550浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2285浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1843浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 10:25 , Processed in 1.416926 second(s), Total 78, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号