最近在学c语言单片机c语言编程入门,感觉好难阿,我该怎么办

单片机c语言学习心得 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
单片机c语言学习心得
14:05:31  
26482&查看
很多想学单片机的人问我的第一句话就是怎样才能学好单片机?对于这个问题我今天就我自己是如何开始学单片机,如何开始上手,如何开始熟练这个过程给大家讲讲。
先说说单片机,一般我们现在用的比较多的的MCS-51的单片机,它的资料比较多,用的人也很多,市场也很大。就我个人的体会怎么样才能更快的学会单片机这门课。单片机这门课是一项非常重视动手实践的科目,不能总是看书,但是学习它首先必须得看书,因为从书中你需要大概了解一下,单片机的各个功能寄存器,而说明白点,我们使用单片机就是用软件去控制单片机的各个功能寄存器,再说明白点,就是控制单片机那些管脚的电平什么时候输出高,什么时候输出低。由这些高低电平的变化来控制你的系统板,实现我们需要的各个功能。至于看书,只需大概了解单片机各管脚都是干什么的?能实现什么样的功能?第一次,第二次你可能看不明白,但这不要紧,因为还缺少实际的感观认识。所以我总是说,学单片机看书看两三天的就够了,看小说你一天能看五六本,看单片机你两三天看两三遍就够了,可以不用仔细的看。推荐一本书,就这一本就足够,书名是《新编MCS-51单片机应用设计》,是哈尔滨工业大学出版社出的的,作者是张毅刚。大概了解一下书上的内容,然后实践,这是非常关键的,如果说学单片机你不实践那是不可能学会的,关于实践有两种方法你可以选择,一种方法:你自己花钱买一块单片机的学习板,不要求功能太全的,对于初学者来说你买功能非常多的那种板子,上面有很多东西你这辈子都用不着,我建议有流水灯、数码管、独立键盘、矩阵键盘、AD或DA(原理一样)、液晶、蜂鸣器,这就差不多了。如果上面我提到的这些,你能熟练应用,那可以说对于单片机方面的硬件你已经入门了,剩下的就是自己练习设计电路,不断的积累经验。只要过了第一关,后面的路就好走多了,万事开头难,大家可能都听过。方法二:你身边如果有单片机方面的高手,向他求助,让他帮你搭个简单的最小系统板。对于高手来说,做个单片机的最小系统板只需要一分钟的时间,而对于初学者可就难多了,因为只有对硬件了解了,才能熟练运用。而如果你身边没有这样的高手,又找不到可以帮助你的人,那我劝你最好是自己买上一块,毕竟自己有一块要方便的多,以后做单片机类的小实验时都能用得上,还省事。
有了单片机学习板之后你就要多练习,最好是自己有台电脑,一天少看电影,少打游戏,把学习板和电脑连好,打开调试软件坐在电脑前,先学会怎么用调试软件,然后从最简单的流水灯实验做起,等你能让那八个流水灯按照你的意愿随意流动时你已经入门了,你会发现单片机是多么迷人的东西啊,太好玩了,这不是在学习知识,而是在玩,当你编写的程序按你的意愿实现时你比做什么事都开心,你会上瘾的,真的。做电子类的人真的会上瘾。然后让数码管亮起来,这两项会了后,你已经不能自拔了,你已经开始考虑你这辈子要走哪一行了。就是要这样练习,在写程序的时候你肯定会遇到很多问题,而这时你再去翻书找,或是问别人,当得到解答后你会记住一辈子的,知识必须用于现实生活中,解决实际问题,这样才能发挥它的作用,你自己好好想想,上了这么多年大学,天天上课,你在课堂上学到了什么?是不是为了期末考试而忙碌呢?考完得了90分,哈哈哈好高兴啊,下学期开学回来忘的一干二净,是不是?你学到什么了?但是我告诉你单片机一旦学会,永远不会忘了。另外我再说说用汇编和C语言编程的问题。很多同学大一二就开设了C语言的课,我也上过,我知道那时天天就是几乘几,几加几啊,求个阶乘啊。学完了有什么用?让你用C语言编单片机的程序你是不是就傻了?书上的东西我们必须要会运用。单片机编程用C语言或汇编语言都可以,但是我建议用C语言比较好,如果原来有C语言的基础那学起来会更好,如果没有,也可以边学单片机边学C语言,C语言也挺简单,只是一门工具而已,我劝你最好学会,将来肯定用得着,要不你以后也得学,你一点汇编都不会根本无所谓,但你一点C语言都不会那你将来会吃苦头。汇编写程序代码效率高,但相对难度较大,而且很罗嗦,尤其是遇到算法方面的问题时,根本是麻烦的不得了,现在单片机的主频在不断的提高,我们完全不需要那么高效率的代码,因为有高频率的时钟,单片机的ROM也在不断的提高,足够装得下你用C语言写的任何代码,C语言的资料又多又好找,将来可移植性非常好,只需要变一个IO口写个温度传感器的程序在哪里都能用,所以我劝大家用C语言。
总结上面,只要你有信心,做事能坚持到底,有不成功不放弃的强烈意志,那学个单片机来说就是件非常容易的事。
步骤:1.找本书大概了解一下单片机结构,大概了解就行。不用都看懂,又不让你出书的。(三天)
2.找学习板练习编写程序,学单片机就是练编程序,遇到不会的再问人或查书。 (二十天)
3.自己网上找些小电路类的资料练习设计外围电路。焊好后自己调试,熟悉过程。 (十天)
4.自己完全设计具有个人风格的电路,产品,。。。你已经是高手了。 。。。。
看到了吗?下功夫一个多月你就能成为高手,我就讲这么多了,学不学得会,下不下得了功夫就看你的了。
我的单片机学习心得。&&很多人说,学单片机最好先学汇编语言,以我的经验告诉大家,绝对没有这个必要,初学者一开始就直接用C语言为单片机编程,既省时间,学起来又容易,进步速度会很快。在刚开始学单片机的时候,千万不要为了解单片机内部结构而浪费时间,这样只能打击你的信心,当你学会编程后,自然一步步就掌握其内部结构了。&&单片机的学习实践。&&单片机提高重在实践,想要学好单片机,软件编程必不可少。但是熟悉硬件对于学好单片机的也是非常重要的。如何学习好硬件,动手实践是必不可少的。我们可以通过自己动手做一个自己的电子制作,通过完成它,以提高我的对一些芯片的了解和熟练运用它。这样我们就可以多一些了解芯片的结构。我相信,你完成了一个属于自己的电子制作,你的单片机水平就会有一个质的提高。& &这就是我学习单片机的心得体会,希望给单片机的爱好者学好单片机有所帮助。
使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。? 第一步:数字I/O的使用 &&使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。 第二步:定时器的使用 学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实 现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数 字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。 第三步:中断 &&单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。中断功能使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),需要设置哪些寄存器才能使某种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么等等。中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能使单片机具有吃着碗里的,看着锅里的功能。 以上三步学会,就相当于降龙十八掌武功,会了三掌了,可以勉强护身。 第四步:与PC机进行RS232通信 单片机都有USART接口,特别是MSP430系列中很多型号,都具有两个USART接口。USART接口不能直接与PC机的RS232接口连接,它们之间的逻辑电平不同,需要使用一个MAX3232芯片进行电平转换。 USART接口的使用是非常重要的,通过该接口,可以使单片机与PC机之间交换信息,虽然RS232通信并不先进,但是对于接口的学习是非常重要的。正确使用USART接口,需要学习通信协议,PC机的RS232接口编程等等知识。试想,单片机实验板上的数据显示在PC机监视器上,而PC机的键盘信号可以在单片机实验板上得到显示,将是多么有意思的事情啊! 第五步:学会A/D转换
MAP430单片机带有多通道12位A/D转换器,通过这些A/D转换器可以使单片机操作模拟量,显示和检测电压、电流等信号。学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概念。使用A/D转换功能的简单的例子是设计一个电压表。 第六步:学会PCI、I2C接口和液晶显示器接口 这些接口的使用可以使单片机更容易连接外部设备,在扩展单片机功能方面非常重要。 第七步:学会比较、捕捉、PWM功能 这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。如果以上七步都学会,就可以设计一般的应用系统,相当于学会十招降龙十八掌,可以出手攻击了。 第八步:学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计???? 学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计是非常重要的,因为这是当前产品开发的发展方向。 到此为止,相当于学会15招降龙十八掌,但还不到打遍天下无敌手的境界。即使如此,也算是单片机大虾了!!
5回答者: -
19:27:04  
这个可以定
17:24:50  
PCB在线计价下单
板子大小:
板子数量:
PCB 在线计价
19:01:31  
19:55:51  
22:16:52  
22:46:23  
受益匪浅啊...感谢分享...
00:43:39  
楼主说的很好的,都是自己的真心话, 我看后也和有感触,我现在也处于学习单片机的重要时期,希望有机会与大虾交流学习
10:59:47  
受教了,谢谢
18:17:49  
18:52:43  
15:18:22  
来学习一下
21:37:55  
这个好&&让我这个新人学到了不少
助理工程师
22:45:43  
顶顶顶顶顶顶上
12:54:20  
对于初学者&&是个不错的建议啊
19:19:52  
10:11:38  
10:31:54  
08:54:45  
很不错的思路
09:03:59  
得到顶顶顶顶顶顶顶顶顶顶
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司[求助]我刚学单片机,是先学汇编好还是先学C语言好啊? - 初学园地 -
51单片机学习论坛
- Powered by Discuz!
[求助]我刚学单片机,是先学汇编好还是先学C语言好啊?
单片机小学生
[求助]我刚学单片机,是先学汇编好还是先学C语言好啊?
如题,是先学汇编好还是先学C语言好啊?& .[em09][em09][em09]
单片机高中生
汇编,再转C。因为汇编在底层,你好了解单片机各个引脚功能,这样以后学其他单片机也会触类旁通
单片机小学生
先学习汇编。
单片机小学生
我是业余的!单片机纯属爱好,用不到编大的程序,就学51汇编了,C的我曾经试过,感觉生成代码量太大,不能装入2051里面(可能我水平太差,不会优化代码吧!)汇编编起来代码量小多了,如果用到数学运算就找些汇编库子程序调用,也还可以应付小制作的。如果是想成为专业人士,还是要学好C的,他们的设计一般会遇到大系统,而且不一定是一种类型的单片机,C与硬件无关,不同硬件编译就行了,汇编语言与硬件密切相关,不好程序移植的。
单片机高中生
其实我也很迷惑,以前学汇编感觉很难,最近看了下C的,感觉要容易些
单片机高中生
汇编肯定要懂的不过c写程序要快,主要是因为不同类型单片机之间c可以很容易的移植用新学的单片机开发产品的周期要短一些
单片机初中生
单片机初中生
个人感觉也是先学汇编
单片机高中生
先汇编,再C
我的淘宝店:/(出售51学习板带无线模块,代做课程设计)
提供源程序(内有详细中文注释),电路图,在线提供技术支持学STM32,C语言功底
学习STM32,接近1个月了,读取别人的程序,特别是逻辑运算符的嵌套,有的很费劲,有的读不懂,指针也困难。
有人说:库函数你只需要会用就行了,不用每条指令都理解,这样真能学到精华吗?
也有人说:你不需要特地的学习C语言,你在写程序的时候就能慢慢提高。
我看自己写的程序只有循环,子函数调用,判断,选择语句。对于高深的C语言压根写不来(逻辑运算初始化和指针)。
为此特地买了一本《C和指针》,但是我发现要想练习好书上的内容,需要长期的时间和精力。
而且对于初学者,STM32也不能放下,平时还得上课,有点力不从心的感觉。
问题:1、C语言对于以后的工作重不重要?需要学的精通吗?(本科)
& && &2、STM32上手寄存器,但是未单独完整的写过一个实验,一直理解别人的例程,这样还不如学习库函数吗?
我有一颗学习的心,但是不想盲目的走弯路。望路过的大大们,给予指点。谢谢!
本帖最后由 pulan 于
10:18 编辑
1。非常重要,应该是安身立命的技能
2。用库还是寄存器,只是方法问题。有的时候最终目的决定了你用何种方式。
学习没啥弯路而言,都是学习。
C语言非常重要
初学 为了学习的的话 还是尽量不用库函数
我感觉 要把C学好(精通不容易啊!!)&&不是看几本经典的 书 就行,书是工具,根据实际需求 需要那块 在具体深入研究那块的知识。百度 google 搜索 相关博客论坛 结合别人的经验来理解!!
寄存器,知道怎么用就行,但是用库函数的话,非常方便你的开发,很容易就能实现你想要的结果,至于C语言,我是这样想的,如果C语言不行的话,别说搞嵌入式,就算是搞单片机也搞不来!然后我推荐一个人C语言讲得很好的,我学了一个寒假,自己觉得有很大的进步。声明:我绝对没有打广告的意念。那就是国嵌唐老师的C,你可以百度一下,先看看C深度剖析的pdf版本,建议在linux下面把代码敲一遍!!
说的非常好
pulan 发表于
1。非常重要,应该是安身立命的技能
2。用库还是寄存器,只是方法问题。有的时候最终目的决定了你用何种方 ...
我决定C语言必须得学好,M3也不放下,学习寄存器。
学习,只能怪我太浮躁了,想一步登天,踏踏实实一步一步来。
你有好的书籍推荐吗(C语言深度解剖有了)
xlwq 发表于
我感觉 要把C学好(精通不容易啊!!)&&不是看几本经典的 书 就行,书是工具,根据实际需求 需要那块 在具 ...
论坛里的师兄们很热情,谢谢!
wsshopping 发表于
寄存器,知道怎么用就行,但是用库函数的话,非常方便你的开发,很容易就能实现你想要的结果,至于C语言, ...
你是直接参加培训班?还是买视频来看?
关于用库函数还是直接操作寄存器,我都是初始化用库函数,快速操作的时候操作寄存器,因为库函数更规范,好修改
自学尽量用库 中断也先用库写一边,最后真的对性能有要求再用寄存器 大部分情况下根本不需要直接操作寄存器
你C语言功底不行, 你重组别人代码的同时,恶补C语言技巧,
有几本书很好的,如&C语言缺陷与陷阱&等等,
你主要不理解的是 结构体,结构体指针, 指针,枚举,等等这些 技巧性东西.
搞懂这些之后那就豁然开朗了.
在这个纷扰的世界有一颗学习的心,很不容易啊,特别是大学生
我曾经也一样,只是那时候也没想那么多,见什么学什么
单片机什么的都是自学,所以上课的时候都是在看自己的东西
《C与指针》真是本好书,我每看一遍都有收获(我也是菜鸟)
觉得学单片机什么的,主要还是动手,看过之后,自己去做,去用,那才能学会,不然白看
网上资料很多,关键是看懂,自己能吸收,而不是碰到一个东西就想着去找找有没有现成的参考,这样永远没有自己的思想,会形成一种依赖
就这么多吧,努力啊
bigallium 发表于
关于用库函数还是直接操作寄存器,我都是初始化用库函数,快速操作的时候操作寄存器,因为库函数更规范,好 ...
初始化函数,用别人的行不?(如:正点原子的),剩下的自己编写。。
jcrorxp 发表于
你C语言功底不行, 你重组别人代码的同时,恶补C语言技巧,
有几本书很好的,如等等,
《C语言深度解剖》,《C和指针》,《C语言陷阱和缺陷》首先理解那一本?还是遇到一个问题了,再从三本书中找到相应部分,仔细研究。
苦行僧 发表于
在这个纷扰的世界有一颗学习的心,很不容易啊,特别是大学生
我曾经也一样,只是那时候也没想那么多,见什 ...
谨记师兄教诲。
maoningchuan 发表于
《C语言深度解剖》,《C和指针》,《C语言陷阱和缺陷》首先理解那一本?还是遇到一个问题了,再从三本书 ...
如果只看过谭浩强的书,那建议你看C Primer Plus和C程序设计语言
LZ现在还是自己多写一写吧,练武不练功到老一场空,只有在实战中解决实实在在的问题才算是把你的技能转变成价值,否则再厉害的屠龙之技实际上一分钱都不值.
pulan 发表于
如果只看过谭浩强的书,那建议你看C Primer Plus和C程序设计语言
学校发了一本谭浩强的,其他书籍就没接触,谢谢!
error_dan 发表于
LZ现在还是自己多写一写吧,练武不练功到老一场空,只有在实战中解决实实在在的问题才算是把你的技能转变成价 ...
从老师哪里接项目来做吗?老师的项目,不是跟M3接触,现在主要想练练,备战今年的电子设计大赛
maoningchuan 发表于
《C语言深度解剖》,《C和指针》,《C语言陷阱和缺陷》首先理解那一本?还是遇到一个问题了,再从三本书 ...
哪本短先看哪本,不建议看 C++ PRIMER&&那本书比电话本还厚,看完你已经没有积极性了.
关键是你说的三本数,& &每隔 3各月看一次,& & 只看一次没用的,
这样就有效了.
maoningchuan 发表于
学校发了一本谭浩强的,其他书籍就没接触,谢谢!
c和指针就是经典中的经典,c primer plus讲得太细了,讲得太啰嗦了。 c深度解剖错误太多
jcrorxp 发表于
哪本短先看哪本,不建议看 C++ PRIMER&&那本书比电话本还厚,看完你已经没有积极性了.
关键是你说的三本数 ...
确实,看完cpp太累了
刘晓涛的LINUX C视频。看完后LINUX也基本会了。C也基本OK.
你如果还是学生,那我建议你全部弄懂,从不用库开始。
C语言还是蛮重要的,固件库或者寄存器在你要用到那部分功能时再去看资料了解,最主要还是看别人好的程序然后自己再去试着改改看,不懂的再去看参考手册
1.极为重要...精通皆传是最基本要求...要上升到一定的境界才行...
最好是有高人指点...否者极易走火入魔...
很多人花大量时间在搞清楚extern union这些极端用法上...
而实际上很多用法是使用率极低甚至是禁忌用法...
2.寄存器没必要学...直接上库函数...
因为寄存器是变化的...你学会了基本这个CPU就淘汰了...
寄存器对程序速度的提升极低...这是相对于汇编来说的...
也就是说你真在乎速度学汇编比用寄存器有效的多...
寄存器只是一些遗老遗少们喜欢的东西...我们应该尊重他们...
但是不至于去学...就和你想吃肉不用去学打猎一样...
逻辑运算初始化是什么 是类似 xReg = 0x003456;这类东西么...
这类东西如果你自己看就展开写...如果你给别人看或是故意想让新手看不懂就合在一起...
xReg = 0x0001 | 0x002 | 0x010;
//& && & 模式1& &模式2& &模式3
指针不会用的话不用就行了...就当是中间类型就可以...
#define hint int*&&
#define V(x) *x
#define A(x) &x
using namespace S
int main()
& & int a = 5;
& & hint b = A(a);
& & printf(&%d&, V(b));
& & 推荐二本必读的:《操作系统》、《数据结构》。
& & 这二本是计算机专业的必修课,也是编程的基础。
& & 《操作系统》教你如何使程序稳定.
& & 《数据结构》教你如何去实现功能。
LZ同感,我现在也是遇到同样的问题!
同学 单片机很多&&C语言就一个 ,这个是基础,学习单片机 你熟悉C语言,开发起来,理解起来都比较容易,我大学 基本上都是在夯实 C语言基础知识。
这些东西都是基础,是必须学的,你如果想从事这方面的工作,那个是必须学的。
maoningchuan 发表于
你是直接参加培训班?还是买视频来看?
看视频和pdf就好,这个不是很难,讲的通俗易懂!
必须的。& && &
C语言是基础重点,C语言不精通肯定不行,但是只要你会常用的代码编写,遇到看不懂的,及时去查看就可以,一下子把所有知识点都装进脑子里,肯定不行,而且你长时间接触不到那个点,你还是很快会忘记。网上下载几个pdf文件,最好买个纸质书,看的时候要做标记,这样查询时候方便,这也是我很多好的书仍然会买纸质的原因——找起来方便,当然,那些代码肯定要敲一遍,光看是没有任何作用的
我也遇到楼主类似的问题了,工作好几年了,当年学的知识都还给老师了,现在正在纠结是重新学习一下C语言,还是直接买个战舰TM来折腾一下。
在其他网站看到了一篇文章,复制给你,与君共勉。
ARM学习步骤
学习必备条件:
1、一块开发板——例如44B0开发板,建议初学者不要去购买那些ARM9体系结构的,因为作为初学者来说ARM9体系的东西是很复杂的,买块ARM7的就可以了(先入门,然后再提高);
2、学习必备书籍
& & 《Pointer on C》中文名字叫《C和指针》(美)里科|译者:徐波 前提你的了解C指针吧(这本书时非常经典的书籍,完全可以看中文版的,作者翻译的非常到位)
& &《嵌入式实时操作系统μCOS-II(第二版)》--邵贝贝翻译的(不能不承认邵贝贝是一个非常好的翻译者)59.20元
& &《μC/OS-Ⅱ标准教程》--杨宗德
& &对于英文不好的朋友可以购买《ARM体系结构与编程 31.50元》--杜春蕾(该书其实还是有很多翻译错误的,大家在看的时候要注意一下,但是不可否认的是这本书到目前为止算得上是我见过最好的讲解关于ARM体系结构的书籍了)
& &对于英文过关的兄弟姐妹可以直接看《ARM+Architecture+Reference+Manual(2nd+Edition)》
3、有条件的兄弟姐妹可以选购一个仿真器 JLINK V8全功能版(这个的感谢中国的优秀工程师,是他们把原价1999多的JLINK变成了几十元钱的东西
4、开发环境--MDK350或者IARARM
& &如果要熟悉这些开发环境,就需要好好读一些这些开发环境的手册资料,不好意思,这个就只有英文的了。
以上4个条件具备下来,可能也不会超过500元钱。
下面来讲讲我的学习经历:
& & 我刚开始学习的时候,自己走了不少弯路,这里就省略不说了。
第一步:在开发板上跑跑简单程序
因为你有开发板,所以你就先在网上找一下对应开发板上的ARM芯片的datasheet,你都不先搞懂芯片的手册,又谈何让自己实现很多功能呢。
熟读数据手册后,就尽可能的在开发板上实现芯片对应的每个功能,像GPIO实验,UART通讯,I2C,ADC,DAC,PWM,RTC,SPI等等。自己写自己的程序,然后在开发板上好好实践一下。
当每个功能模块都实现以后,建议你让你的开发板实验一下多个功能复合使用,比如用UART打印出ADC的值什么的。
第二步:学习uCOS
鉴于你已经购买了《嵌入式实时操作系统μCOS-II(第二版)》,除开以下三个文件:
1、OS_CPU_C.c
2、OS_CPU.H,
3、OS_CPU_A.asm(这个是MDK环境下的汇编文件)或OS_CPU_A.a(这个是IAR开发环境下的汇编)
这三个文件的处理机制暂时可以不用先了解怎么做的,怎么移植的,以后再说
第一次读这本书时,搞清楚什么是任务,什么是前后台,为什么要在系统中加入嵌入式操作系统。
第二次读这本书时,详细了解他的TCB(Task Control Block)和ECB(Event Control Block)的数据结构,搞清楚整个uCOS的实现机制(这里不要先就去看uCOS的移植,这样只会让你云里雾里的)
第三次读这本书是,详细了解信号量,互斥信号量、消息队列、邮箱和时间标志组
鉴于你又购买了《μC/OS-Ⅱ标准教程》,你 可以想在VC++ 6.0开发环境下实现对信号量,互斥信号量、消息队列、邮箱和事件标志组的上机实验代码。
如果还是不能了解uCOS怎么工作的,建议你多看几遍(我可是足足看了6、7遍了,书都翻得脱页了。汗说明我很笨,希望各位看官都比我聪明,呵呵)
第三步:建立对uCOS的初步认识
在网上下载对应你的开发板ARM芯片移植好了文件OS_CPU_C.c,OS_CPU.H,OS_CPU_A.asm(当然有的开发板已经提供了这样的基础实验)
在你的开发板上跑跑uCOS,建立起自己对于uCOS在ARM7开发板上的认识。
在你所购买的ARM7开发板上编写一个自己跑uCOS得任务(这里先不要去搞中断,初学者对于uCOS下的中断程序设计根本就搞不清楚)
第四步:熟悉ARM体系结构
因为是基于ARM7的移植,建议英文不好的去看看这本书《ARM体系结构与编程》(虽然这本书的作者在翻译时有很多操作,但是还是建议初学者去购买来好好看看),对于英文好的直接在网上下载《ARM+Architecture+Reference+Manual(2nd+Edition)》看就可以了
在看这个《ARM体系结构与编程》或《ARM+Architecture+Reference+Manual(2nd+Edition)》时,务必注意多看几次,了解以下几个方面的知识:
1、ARM模式下的指令集
2、Thumd模式下的指令集
3、异常模式及进入异常时ARM如何处理
4、一定能熟悉ARM中的汇编指令
5、熟悉CPSR,R0-R7,R8-R14,R15及在各个模式下,这些寄存器的映射。
熟悉以后,再来自己做uCOS的移植了。
第五步:uCOS移植
当然在自己编写代码做移植uCOS之前,有必要看看别人的移植代码。
其实对于uCOS的移植,我们只需要编写关键的三个文件,文件如下:
1、OS_CPU_C.c(堆栈初始化操作OSTaskStkInit函数)
2、OS_CPU.H:完成在该芯片下的数据定义,比如什么unsigned char 之类的,注意一下OS_STK和OS_CPU_SR的定义,定义下关中断和开中断的方式,有三个只能选择1个,ARM芯片一般是定义为第三种方式
3、OS_CPU_A.asm(这个是MDK环境下的汇编文件)或OS_CPU_A.a(这个是IAR开发环境下的汇编),这个文件的内容就多了,要做以下几个函数的重写:
1、OSStartHighRdy函数
2、任务级的任务切换函数OSCtxSw,
3、中断级的任务切换OSIntCtxSw,其实只要写好了OSCtxSw,OSIntCtxSw自然就copy一下就完了(copy的时候记者要把保存当前任务的寄存器去掉就可以了。
第六步:测试自己的uCOS移植代码
第七步:在自己写的uCOS移植代码中跑跑任务。
c语言太高深了,语言努力学习,并且还要学好
C语言非常重要
好像很不错的样子,。值得学习啊、~
一边做产品一边学习,理解深刻!也容易些
have&&a look 也来学习一下
有个老家伙对小家伙们讲:当你不知道该干什么的时候,那就去看C语言吧.
研究库吧,对你的理解C很用处的
wuzhujian 发表于
推荐二本必读的:《操作系统》、《数据结构》。
& & 这二本是计算机专业的必修课,也是编程的基础。
坛友好热心啊。
c是基础的基础,一定要熟练,最好能精通。
已近学习过C语言(谭浩强那版),请问大神们那些书能巩固加深C语言?
通读唐诗三百篇不会作诗也会吟。道理是一样的。学的多了,用的时候能拿来用就可以了。完全自己写,周期长成本高。
本帖最后由 jackk 于
18:30 编辑
看到楼主的帖子,想起前两年自己刚接触STM32时候的心情:
1,我是大三的时候接触的STM32,由于以前有些51的基础,对于STM32最初的的学习总是在思想上停留在寄存器的层次上,总是感觉是不是需要像51一样,从寄存器入手呢?这样子直接调用库,是否有助于学习到核心的东西呢?我感觉,每个真正想学习技术的人,在首次接触STM32直接调用库的时候都会生发上面类似的想法。
2,首先,STM32的库我个人看来写的很规范,不知楼主C语言水平怎么样。在文件组织,编程架构,甚至函数处理,模块处理和命名上,ST的库很值得学习。
3,回到是否需要从寄存器入手这个话题上来。我个人感觉,对于新手,无论51单片机学的多好,如果第一次接触ARM处理器,我感觉STM32是最好不过的入门之选。如果刚开始就上大量的寄存器,读User Mannual,看DataSheet,这无疑会大大打击初学者的信心,大量的寄存器配置,编程规范性,甚至在架构上,自己始终会处于井底之蛙,看不到真正的“大家风范”。
4,后来,我接触到了LPC系列ARM,LPC没有官方的库,这时候越发感觉到当初学STM32用ST库的好处,倒不是希望说LPC有个库就好了,更重要的是学STM32时候,规范的思维方式很快的引导了LPC系列的学习,BSP,分模块,程序架构,文件处理。。等等等等。。
5,如果楼主是ARM新手,大胆的用ST的库吧,别想得太多,如果楼主是ARM老手,试着自己模仿ST的库,编写一个基于自己芯片的库吧。
6,楼主说自己只看别人的程序,自己不编码,我想说:别人的东西,做的再好,终究还是别人的,自己试着写一个小的程序,跑起来之后,且不问乐在其中的成就感有多大,这中间遇到问题解决问题的过程本身就
会学到很多知识。
7,第一次在阿莫上发言。粗次给了撸主,在阿莫论坛上看到的,送给楼主:少则得,多则惑。
32的库完胜某些大学教材。
maoningchuan 发表于
学校发了一本谭浩强的,其他书籍就没接触,谢谢!
C语言书籍推荐
1. The C programming language 《C程序设计语言》
2. Pointers on C 《C和指针》
3. C traps and pitfalls 《C陷阱与缺陷》
4. Expert C Lanuage 《专家C编程》
5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs& & & & 《编程精粹--Microsoft 编写优质无错C程序秘诀》
6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》
7.《C语言嵌入式系统编程修炼》
8.《高质量C++/C编程指南》林锐
jackk 发表于
看到楼主的帖子,想起前两年自己刚接触STM32时候的心情:
1,我是大三的时候接触的STM32,由于以前有些51的 ...
谢谢坛友的真挚的给予提点,凡事欲速则不达。也许经验太少,无法体会到坛友的一些经历,但是我会尽最大努力去学习
等你学了之后就会有自己的看法了,而不是有人说怎么样,有人说怎么样。另外程序得自己试着写,看永远都真正掌握不了。边写程序边看书,而不是等到你C语言能写的多高级了,再去写单片机程序
C语言,数据结构,操作系统。在学生的时候把这三个不说搞清。至少搞懂吧。这样以后不管什么片子,不管单片机还是ARM或是PC软件,在你眼中都是浮云。
Hello灰太狼 发表于
我也遇到楼主类似的问题了,工作好几年了,当年学的知识都还给老师了,现在正在纠结是重新学习一下C语言, ...
谢谢楼主的经验分享
maoningchuan 发表于
谢谢坛友的真挚的给予提点,凡事欲速则不达。也许经验太少,无法体会到坛友的一些经历,但是我会尽最大努 ...
尽最大的努力去学习?
何为最大?
lologame 发表于
尽最大的努力去学习?
何为最大?
这不是准备开工了。。求带
jackk 发表于
看到楼主的帖子,想起前两年自己刚接触STM32时候的心情:
1,我是大三的时候接触的STM32,由于以前有些51的 ...
谢谢 ,我也是新手 我决定走库这条道路了。。
一直没搞懂啥叫学寄存器。。。寄存器不就三步么,读,修改,写,还有什么花样?这玩意还能学啥?报菜名么?
& && & 标记
要是觉得C语言不行 那就先放下M3 潜心买一本C看(我看的是谭浩强的) 看的时候先不要想单片机
我当初就是学51前看的 学长先让把指针之前的东西看完 我用两天时间看完了
然后后面的部分就是一边学51一边看 更容易理解了 现在玩STM32 没觉得在代码理解上很费劲
所以我建议你先补补C吧 程序是灵魂
我觉得学C是需要时间的,我刚开始用C的时候,看ST的库,感觉有点像看天书,后来自己写过一段时间程序后,再回过头来看ST的库,看的有点感觉了,觉得库写的很好,有些地方很精妙,再后来就慢慢开始用库,按照库的方式写程序,感觉比以前有了提升;还有不同MCU厂家的库都有各自的特点,优点,都可以借鉴;
maoningchuan 发表于
《C语言深度解剖》,《C和指针》,《C语言陷阱和缺陷》首先理解那一本?还是遇到一个问题了,再从三本书 ...
这几本貌似都不错。。。
各位的回复都很好,作为新手的我也从中看到点门道O(∩_∩)O~楼主加油
C語言~不重要~學校就不用教了~基本上~學校都是基礎課程~
然後進入社會~再延伸~所以~加油吧!
我也學了1個月而已~也還在C語言的書!!!
看到楼主的帖子,想起前两年自己刚接触STM32时候的心情:
1,我是大三的时候接触的STM32,由于以前有些51的 ...
赞一个,说的很对!51的寄存器比较简单,所以直接操作没多大问题,但是STM32就复杂多了,光手册都好多的,如果是新手,直接上寄存器,会很吃力的。我当初也是纠结用库还是用寄存器,后来时间紧,用的是库,有时间想再看看寄存器,其实也挺好的,慢慢来,别浮躁就好了
看时间进度的安排
不怕走弯路你就不会走弯路,越怕走弯路越会走弯路,我觉的谭浩强那本就够了,其他的全屏人生感悟和个人阅历,跟语文写作文一样
哈佛的David J. Malan讲的CS50。网易公开课上有,可以下来看看。
C Primer Plus&&学电子的动手能力要强
在这个纷扰的世界有一颗学习的心,很不容易啊,特别是大学生
我曾经也一样,只是那时候也没想那么多,见什 ...
大神,给介绍个工作吧
看谭浩强的书,多看,呵呵,想学Stm32先看库,如果有兴趣,再看库的实现,反正都有代码,如果直接学寄存器,会比较郁闷的
推荐二本必读的:《操作系统》、《数据结构》。
& & 这二本是计算机专业的必修课,也是编程的基础。
这两本书作者是那个??在网上搜太多叫一样名字的书了!!!!!!!!
& && && &&&谢谢
马克,C语言功底
《操作系统》和 《数据结构》其实是基础的专业课,好比大学里学的《高等数学》,具体可能有很多不同的版本和作者,但讲的其实是一回事请。
这样看来LZ应该不是从汇编学过来的人
个人认为,掌握基本语法知识后,多看(官方库程序),多练(自己编程),一步步就可以了,没必要开始看太多书,效果不好。
阿莫电子论坛, 原"中国电子开发网"}

我要回帖

更多关于 单片机c语言程序设计 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信