请教现在学习单片机是学习51还是stm32开始
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教现在学习单片机是学习51还是stm32开始相关的知识,希望对你有一定的参考价值。
刚开始从51学习最合适的,我学习单片机的时候就是从51开始学习的,刚开始一直看书,发现效果很慢,后来就听人家讲,用开发板学习最快。我就弄了一套吴(鉴鹰)老师开发板。等51入门了再学习STM32很快的。 参考技术A 在学校里面都是先从51开始学习的,并且是学习的是汇编语言。其实如果自学的话,有C语言功底,可以直接从stm32开始学习,多看他们完整的工程,并且在开发板上调试程序,买个st link实现仿真功能,注意keil仿真看变量是最好的学习方法。 参考技术B 我认真 的看了一下这个32突然觉得不是很难,反而觉得很简单了,因为就是一个配置,配置好了,就可以调用了,相比对单片机零基础的同学不建议上手,因为有很多概念他们不明白,比方说,指针,函数调用,头文件,共用体,结构体,枚举体,都是常常会用到了,这个都不难,就是概念性的问题,连着写概念都不清楚的话,就很吃力了,也打不到想要的结果,所以建议有51的基础,有了基础,就对这些概念都清楚了,那么就简单多了,因为在32里做的更多的工作就是函数相互调用,老师也不会再讲什么是函数,函数是这么执行的这些基础知识,在学51的时候,我们知道寄存器是这么用的,什么是声明,什么的赋值等等,不用学的太精,也不能什么都不明白,最起码,简单的操作的会用,有了这些知识就完全可以驾驭32L了,为什么这么说呢?因为在32里,我们百分80的工作都是在调用别人写好的函数来完成自己的功能设计,(重点:在51里,让你写一个函数去实现一个功能,你学的不很好的话,那应该就是很大的难题,),不同的是,在32里这些函数都有了,我们只需调用就可以了,是不是很简单???我个人认为只要你的有好的思路,驾驭32,一点问题都没有,但是驾驭51就不好说 了,因为每实现一个功能都的编写一个函数,这个函数的算法很重要,设计出来也不是那么简单的,当然也不是想我说的那么难,
在给大家举个例子吧:51比喻成我们要搭建一个小房子,那么你需要做的就是,先准备好盖房子的架构,也就是整个框架你的有思路,接下来要做的是,这样弄砖头呢?砖头我们比喻成函数,我们就弄点土加温就是做好砖头,我们把做砖头的整个过程封装成一个函数,这就是所谓的函数,一个函数就是一个小工厂,这个工厂就生产一种东西,好了接下来开始弄水泥,也就是制作水泥,这是工作都做完 了,才能搭建房子,是不是很复杂,这里多说一句,c语音是面向过程的,有C的基础会明白,不明白的就理解成,我们盖房子用到的所有东西都的自己制造,做好的放一个位置,就是一个函数,等我们都就绪了,一个一个调用就可以了???难不难,不解释你应该也明白了51是什么?所有用51一般都是做的小项目,
有了上面的说法我们就可以在介绍32了,在32里这些砖头。水泥等等可以用到的都有了,都是高级工程师写的,用的最简单的c语写的,懂c的都能看明白,有了这些东西,我刚刚也说了,只要你的思路好,就能驾驭32,砖头这么用人家也都给你说的明明白白了,水泥这么用都告诉你了,那你还不会用吗?32的老师讲的内容都是如何调用,不讲基础的知识,
那么为什么32有这些功能51没有呢???
答案是:51的架构绝定了,他的资源很少,我们只能盖给小平房,当然不包括所有的51,举例而已
32的设计理念就是做小平房和大高楼,都可以,小到很下,大到很大,
总结一下,51什么都的自己弄,32我们不生产功能,我们就是大函数的搬运工,
给初学者的建议:如果你想很快的做自己的产品,或者做单片机工程师的话,我们用1年为例?
我建议认证的学10个月的51,用2个月学32,你会用的得心应手,如鱼得水,更关键是,你在学的过程,你是先会座,在会爬,在会走路,骑自行车,开车,开火车,开飞机,很扎实,
直接学32,你就是刚刚出生,你会c就等于16岁的小成年人,那么你直接开飞机的话,飞机很多功能按钮,老师不会一个一个的告诉你这么按钮是这么做的,就告诉你是这用,这就很不错了,你可能的用1.5年的时间才能写好,也不见得有多好,
以上的总结,是我个人的经历,希望不要误导大家,我是在北京精锐博仪表厂上班的,希望帮到你
STM32 RW问题请教
参考技术A RW段中存放的一般是静态变量,包括全局静态变量和局部静态变量,初始化或未初始化的。按你描述的,在函数调用的时候,也就是正常运行的时候,这个0x20000044内存值有变化。但是在单步调试的时候,不变。我个人觉得可能是你当前这个跟踪的函数以外,有什么地方改变了它。在全速运行时,花不了多长时间就会发现值变了,但是单步调其实是很慢的,很难复现这个情况。这样,你先查查0x20000044这个是被编译器分配来做什么用的,是不是中断向量表的一部分,还是说是什么静态变量的存储地址。接着再往下查,是静态变量的话,它是什么变量,在代码中查查被哪些地方读写过,有没有可能是被“多线程”方式改变了。另外也比较怀疑是做IAP时有点问题,IAP过程如果用到中断向量表(这几乎是一定要用到的),一定要注意中断向量表重映射的问题,你说的0x20000044和0x20000000很近,0x20000000可能就是你这个STM32CPU的RAM,重映射中断向量表的时候,一般要重映射到RAM中,不知道是不是IAP相关的代码影响到了这个内存值的变化,注意查查这个问题
以上是关于请教现在学习单片机是学习51还是stm32开始的主要内容,如果未能解决你的问题,请参考以下文章