从51到ARM,这路怎么走?(精华在23楼)

2019-12-24 18:39发布

很多人说:有51基础的人很容易入门ARM。我想说,坑爹啊,我就是51走过来的,看ARM几个月了,一点进展都没有,也不太知道从何入手,下面说下我的问题吧,我想也有很多人跟我一样遇上这些问题,所以希望大家仔细看看,并回复我一下,指条明道。
51都是有地址映射的(即SFR,特殊功能寄存器),在头文件reg52.h里面,不知道ARM有没有,且不知道如何调用。以STM32为例,官方有提供个固件库,也就是好几个文件夹和几十个文件,里面有会汇编写的,也有用C写的,貌似也有地址映射,貌似里面的地址映射语句不是像51里面用sfr来表示的,貌似是用#define来定义的,这边搞糊涂了。固件库中还包含了很多打包好的程序,比如说各种传输协议要用到的程序。但我的思维还停留在51,并且我不知道停留在51的这种思维是否是正确的:那就是,完全自己编码,除了sfr定义,包括很多包装好的函数,自己写出来才算学会。这种思维,不知道在ARM学习上是否同等适用,难道学ARM时上了个层次,就直接在别人打包好程序的基础上做产品了吗?必须强调,在上位机,PC软件方面,是得调用操作系统的很多函数、库,这个没办法,因为强大的PC界面及功能,如果底层驱动什么的都自己写的话会累死,而且不一定有成效。但ARM不同,不同在他比PC低一层次,但同时又高51一个层次,所以我纠结了。并且我现在不知何从入手,就算是将固件库搞明白也得花不少时间。但我觉得,如果让ARM点亮一个小LED,应该用不上那么多固件库或函数,只要能点亮个LED就行,这么低的要求,应该是用到很少的语句及配置程序,但网上所有的教程基本上首先就教你:如何调用所有的官方库。这无疑让初学者陷入泥潭,晕。
说得很乱,初学者就这样,我现在回头看看我之前学51时问的问题,也觉得那些问题很没逻辑。但请理解,如果有什么问得无厘头的地方,多多包含!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
99条回答
badboy.tao
1楼-- · 2019-12-24 23:54
我很有感触,我大学刚毕业就懂点51,后来到单位实习,领导让我单独搞一个产品用STM32,就大致的和我说了下思路,要我在规定的时间里完成,我自己很清楚,能不能留下来,就看这次做的怎么样了,我马上上网搜索STM32方面的资料,全部初略的看了一篇,在看了一些视频,买了开发板,跟着教程做了几个实验,摸索了一个月,大致明白了STM32,以后慢慢的用到现在也就10个月左右,做了很多有关STM32的产品。

对于库的问题,我刚开始也很不明白,觉得这样很不爽,后来等到你做产品时,你才会发现“开发时间是最重要的”,毕竟32位的CPU,寄存器的数量和配置,是不像51妈么容易的,我们要站在巨人的肩膀上去实现我们所需要的东西,当你要升入了解时,或者调试碰到问题时,再去查看寄存器。

还有你最好是从原理图到程序全部自己弄,到阿莫PCB打烊,自己做一个小的东西,等你昨晚后,你至少是知道怎么去学了
lcofjp
2楼-- · 2019-12-25 03:33
看来楼主不怎么熟悉C语言,STM32的寄存器都是以结构体形式出现的,具体外设是一个结构体指针,外设的寄存器通过引用结构体的成员。从他们提供的库函数就可以看出,都是通过这种方式操作的。reference manual也没仔细看吧。入门的第一件事应该是仔细研读一下文档呀。
lcofjp
3楼-- · 2019-12-25 03:51
匿名结构体是发展趋势,稍复杂点的MCU都是这种形式,多个相同外设使用同一个结构体即可,只是起始地址不同(如SPI1,SPI2,SPI3)。
waterx3
4楼-- · 2019-12-25 04:10
 精彩回答 2  元偷偷看……
raxfeer
5楼-- · 2019-12-25 05:22
lcofjp 发表于 2012-3-27 08:25
看来楼主不怎么熟悉C语言,STM32的寄存器都是以结构体形式出现的,具体外设是一个结构体指针,外设的寄存器 ...

我没有这个文档:reference manual
能否提供下?
说实话,像我这样的新手连要看什么文档都不知道,希望大神告诉我应该看些什么。
lcofjp
6楼-- · 2019-12-25 08:57
raxfeer 发表于 2012-3-27 12:21
我没有这个文档:reference manual
能否提供下?
说实话,像我这样的新手连要看什么文档都不知道,希望大 ...

www.st.com去寻找你所需要的。

一周热门 更多>