OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5029|回复: 15

我是一名大二学生,自学原子哥的32单片机已经半个月了,我讲一下关于学习方法的问题,希望各位前辈和原子哥指导下。

[复制链接]

31

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
133
金钱
133
注册时间
2018-4-22
在线时间
17 小时
发表于 2018-5-3 21:34:47 | 显示全部楼层 |阅读模式
6金钱
我现在在自己自己有空在尝试着编写单片机程序时,比如我需要用到蜂鸣器,我就会去蜂鸣器的文件夹里面把c,h文件复制过来,然后到我自己的程序里加进去,然后设置路径,然后回到蜂鸣器的源文件看看怎么用,然后使用他。我变成了需要什么功能我就去原子哥的源程序文件夹里面直接拿相应的出来用,但是我自己是不想去写这些源文件,因为我必须要看着原子哥的视频我才写得出来,如果没有他的视频,我自己写的话不仅思路不清晰,而且最大的问题就是源文件需要的一些比如使能GPIO口这些函数我不知道找寻的套路,我得在32的很多头文件翻挺久才能找到,而且找之前还要先去手册查查函数的名字叫什么。就非常繁琐而且费时间。所以我想问问各位,我这样的学习方法是不是不好,因为如果有一天在外面工作没有源文件可以直接拿来用,而要自己写,那我写起来就非常困难了。希望过来人能够告诉做单片机项目应该养成什么样的习惯比较好,还有就是那些函数怎么找起来会比较方便一点呢?实在是很累啊。以前学51的时候完全没有遇到这种问题,刚学32半个月,有上面的疑惑。在这里先谢过认真看我的问题,并且给我回答的人。

最佳答案

查看完整内容[请看2#楼]

首先说,这样确实不太好,你写的程序的底层几乎都是别人的,虽然这并不影响你所要实现的功能,但是你总会某天接触一个极少有人知道的芯片,去做它的开发。 我的建议是,一开始学习的时候“照葫芦画瓢”是可以的,也是比较推荐的做法,如果自己从0开始写,肯定会遇到各种各样奇葩的错误,这个时候你的能力有限解决的过程很痛苦,你学这些东西的热情和自信都会被这些琐碎的错误给磨光了。但是当你跑通了例程之后,最好是自己“默 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-5-3 21:34:48 | 显示全部楼层
本帖最后由 DreamWaterPro 于 2018-5-4 08:46 编辑

首先说,这样确实不太好,你写的程序的底层几乎都是别人的,虽然这并不影响你所要实现的功能,但是你总会某天接触一个极少有人知道的芯片,去做它的开发。

我的建议是,一开始学习的时候“照葫芦画瓢”是可以的,也是比较推荐的做法,如果自己从0开始写,肯定会遇到各种各样奇葩的错误,这个时候你的能力有限解决的过程很痛苦,你学这些东西的热情和自信都会被这些琐碎的错误给磨光了。但是当你跑通了例程之后,最好是自己“默写”一遍。看上去似乎在重复造轮子,但是只有你亲自实践了,才会知道在什么样的情况下会出什么样的错误,出了错误怎么去解决(这个时候解决就有了可以参考的例程——这也是我认为例程所起的重要作用之一)。另外补充一下,像是液晶屏这类较大较复杂的外设的驱动就没有自己仿照写了,一般厂家都会提供参考。等你掌握了基本的片内外设和常用的通讯协议之后,你就已经基本出师了,可以做你想做的事情。
另外关于你想知道的怎么去寻找那些函数,例程你“默写”多了,自然就知道会用到什么函数了。
十六进制带我飞。
回复

使用道具 举报

12

主题

129

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2018-4-5
在线时间
71 小时
发表于 2018-5-3 23:52:06 | 显示全部楼层
库函数的?建议你先花一段时间把各种定义学好,GPIO、中断、定时器什么的,然后剩下的其实和51还是很相似的。库函数的优点就是很多东西都封装好了,直接调用就好了。具体调用的地方,就在你所需要的东西的头文件最下面的地方,例如GPIO,它所有封装的函数都在GPIO的头文件中。(个人见解)
然后你说你思路不清晰,是因为你心里还没有一个具体的格式,建议你可以参考编程语言中的程序流程图,先用笔画下来,然后再慢慢根据所学的知识一点一点码出来。
保守秘密,守望共济,等价交换,尊重知识,探求真知。
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
发表于 2018-5-4 08:26:34 | 显示全部楼层
我大二要是有你这样的觉悟学单片机就好了,哎
回复

使用道具 举报

6

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1323
金钱
1323
注册时间
2016-12-27
在线时间
156 小时
发表于 2018-5-4 08:59:12 | 显示全部楼层
既然在学校有的是时间,就从芯片结构到各个功能的寄存器慢慢熟悉呗。反正所有的芯片都是从控制寄存器的位开始的;
回复

使用道具 举报

20

主题

450

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4899
金钱
4899
注册时间
2017-7-6
在线时间
720 小时
发表于 2018-5-4 09:06:58 | 显示全部楼层
你51学通了 对32上手也快   刚开始要配置IO口,就像51单片机一样用到定时器,要初始化,32的也一样,然后慢慢参考固件库和参考手册
我是小白,很白很白的小白!!!
回复

使用道具 举报

6

主题

359

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1604
金钱
1604
注册时间
2017-12-18
在线时间
173 小时
发表于 2018-5-4 09:15:53 | 显示全部楼层
加油骚年
回复

使用道具 举报

52

主题

334

帖子

0

精华

高级会员

Rank: 4

积分
560
金钱
560
注册时间
2016-4-12
在线时间
230 小时
发表于 2018-5-4 09:30:49 | 显示全部楼层
我想分两个方面吧:先说楼主作为一个名学生,建议还是从头开始写,不要做拿来主义,这样对你以后有好处,然后说工作中吧,其实现在很多公司都是作为产品研发的,讲究的高效率,而且很多硬件公司都会把很多功能封装好,都是提供技术支持的,所以大部分企业 (高精尖的除外)还是利用现有资源去做产品的,至少中小型企业大部分是这样干的。而且写源码真的不仅仅是学习MCU的使用,更是对自己的一种锻炼。
就好像网上有一篇说周立功害了很多人,说学习不应该从底层开始学习,因为现在硬件都很成熟了,但是我觉着还是各有优点吧,不能一概而论。要看自己向哪个方向发展了。
回复

使用道具 举报

20

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2017-5-24
在线时间
98 小时
发表于 2018-5-4 09:37:29 | 显示全部楼层
简单。别用库 ,用寄存器,这样下来你就会发现你看了很多遍手册,会熟悉得多,至于库函数记不住函数这个太正常了,鬼去记这些东西,没什么用,每个库,每款芯片这都有差异,学会看手册,看历程才是硬道理
回复

使用道具 举报

6

主题

146

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1254
金钱
1254
注册时间
2016-11-30
在线时间
211 小时
发表于 2018-5-4 09:53:34 | 显示全部楼层
楼上的几个大佬说的都非常在理,也支持以上的观点,简单的说一下个人看法跟楼主探讨探讨。我觉得开始学32还是从寄存器开始看会比较好,这样你可以了解到寄存器的概念,以及配置方法,这对你了解芯片会有很大的帮助,当你遇到要自己开发一款芯片且资料很少的时候,这个经历会帮到你。其次,库函数究其根本,其实也是对寄存器进行操作,所以了解寄存器会让你更好的理解库函数的封装。另外,一般情况,像led驱动,按键驱动,这些基本上是直接拿来用的,只要把引脚改成自己的就行了,不过前提是最好自己懂得配置,建议最好自己弄懂怎么配置以后,弄成自己的驱动库,后面自己做项目可以自己拿来用,自己写的,自己用起来会思路会比较清晰。最后建议学单片机最好是依托模块来进行学习,也就是买点什么传感器什么的模块进行学习,效率会比较高,且能让你对单片机运用的更加熟练,举个例子,外部中断部分,完全也可以用人体红外热释电传感器来简单做一个楼道灯的训练,一个人体红外热释电传感器才几块钱,成本也不算太高,希望对你有帮助。
回复

使用道具 举报

4

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
340
金钱
340
注册时间
2017-12-6
在线时间
50 小时
发表于 2018-5-4 21:29:43 | 显示全部楼层
大二学生,才半个月,就有自己见解,值得鼓励,你已经走在很多人前面了,很多人都玩电脑去了,不过才半个月时间,原子哥的视频应该还没看完,趁有时间,还是应该多练,越熟悉,你越能得心应手,后面你说的像库函数不知道哪里去找,都会不存在,你用的多了,就熟了,贵在坚持
回复

使用道具 举报

31

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
133
金钱
133
注册时间
2018-4-22
在线时间
17 小时
 楼主| 发表于 2018-5-4 21:40:51 | 显示全部楼层
lxyd 发表于 2018-5-4 21:29
大二学生,才半个月,就有自己见解,值得鼓励,你已经走在很多人前面了,很多人都玩电脑去了,不过才半个月 ...

非常感谢你的回答
回复

使用道具 举报

31

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
133
金钱
133
注册时间
2018-4-22
在线时间
17 小时
 楼主| 发表于 2018-5-4 21:41:02 | 显示全部楼层
MrXiong 发表于 2018-5-4 09:53
楼上的几个大佬说的都非常在理,也支持以上的观点,简单的说一下个人看法跟楼主探讨探讨。我觉得开始学32还 ...

谢谢哈
回复

使用道具 举报

13

主题

116

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
金钱
372
注册时间
2018-1-22
在线时间
118 小时
发表于 2018-7-1 15:56:43 | 显示全部楼层
学好C语言,会看芯片手册这些才是重点。stm32功能配置都是复制粘贴的,谁还去一句一句写啊,真正要钻研的是C语言基础、算法、通信协议,看芯片手册这些实现功能的东西,而不是去研究库函数到底怎么配置寄存器的,研究个半天就只知道往哪个寄存器哪个位写了个1,完了还把那寄存器和那个位名字给死记下来,我觉得这是最蠢的了,你又不出书搞这些干嘛?别人弄得库函数就是为了降低你入门的门槛,你还自己找难度,学点其他的不好?
回复

使用道具 举报

6

主题

126

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2018-4-18
在线时间
10 小时
发表于 2018-7-2 16:27:17 | 显示全部楼层
支持你  坚持下去呗
回复

使用道具 举报

20

主题

450

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4899
金钱
4899
注册时间
2017-7-6
在线时间
720 小时
发表于 2018-7-2 18:01:40 | 显示全部楼层
有一个手册叫固件库麻烦了解下,比如你用到AD模块,你去固件库看AD相关的,就大概知道用什么函数了;比如你IO口初始化,那么你去看IO口相关的,就可以找到,固件库就是这么好
我是小白,很白很白的小白!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-29 05:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表