注:本文只是面对萌新的,单纯地学习资源的推荐,没有任何技术上的指导和交流。文章写得很烂,请大佬们不要喷 [/卑微] 。
第一次写文章,写得不是很好,见谅。这里呢只是面对与刚刚入坑的新手,也只是依据我个人的经历和身边朋友的反馈来写的。还请各位不认同的朋友们勿喷。
修改日志:
2022/8/28,发现文章逻辑问题以及语言组织问题,进行了文章的大幅度修改。
前言
如果你学过51单片机,那么将会感觉stm32单片机的学习和51单片机的学习比较起来会有比较大的差异,具体的差异我将会在后文指出。不过你也不用因这种差异而感到担忧,看完我下面的分享,你将豁然开朗。
正文
一、32单片机和51单片机的区别
1.硬件上的区别
硬件上的区别我就不再多说了,因为我了解的也不多,xdm可以参考这篇博客: stm32和51的区别.
也可以自行上网搜索。
2.代码上的区别
先上两个代码,可以看出只是想简单的成为一个点灯大师,32的代码却比51多了不少,不过谁让人家是32位单片机呢 [/坏笑] 。
(1)51单片机点灯实验:
//51单片机点亮一个led灯的代码,P21口
#include <STC89C5xRC.H>
void main()
{
while(1)
{
P21=1;
}
}
(2)stm32单片机点灯实验:(使用库函数)
//stm32单片机点亮一个led灯代码,PC13口
#include "stm32f10x.h" // Device header
int main()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能相应的时钟
GPIO_InitTypeDef GPIO_InitStructure;//重新定义结构体
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//配置引脚模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;//设置要调用的IO口
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置IO的速率
GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化IO口
while(1)
{
GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);//将相应的IO口下拉至低电平
}
}
不过看到这里先不要慌,这么多的代码却都是相对固定,他不会让你的编程变得麻烦,而是在你修改io口的时候也可以像51那样,看数识口 [/坏笑] 。
如果你看了这些纷繁复杂代码背后,会发现他们都是对单片机寄存器的操作。大道至简,一切又回到了起点,仿佛我们从来没有遇见过。所以32也是可以通过操作寄存器来盘他的。
但是随着开发东西的复杂度的提升,会发现这种用库函数的方法才是最优解。
二、学习的资源分享
依照个人看法,对于新手我还是比较推荐江科大自化协的教学视频
.>_<. 链接: STM32入门教程-2022持续更新中
视频手把手教学,上手即代码,带着你一行一行的敲,边敲边解释,印象深刻。会有较大的成就感,不至于看见一堆寄存器,wc这是什么,以至于看着看着就睡着。
然后自己碰见的一些视频中没有出现的问题时,自己去网上找答案,一般都会有大佬们完备的解决方法。
然后再将其他的视频当辅助,如正点原子和野火的,差不多就可以满足基本学习。
三、学习的注意事项>_<
1.连续的学习,在看视频的时候认真,最好抽一段连续的时间来学习一个部分的内容,最好不要中间断开,这样有利于构建一个完整的该部分的知识体系。
2.勤于动手,看视频时候不要忘记自己动手跟着视频一起敲代码,因为江科大的视频基本都会带着我们一起手打代码,所以最好跟着视频一起敲。这样有利于加强我们对该部分知识的记忆和理解,同时会有一定的成就感。形成正反馈,从而促进我们学习。
3.勤于查资料,遇到问题就及时搜查资料去解决问题,不要等到最后漏洞越来越多再去补就很困难了,另外查资料时应该集思广益,不应该纠结于一个或者几个方法。
4.在学习到一定程度后,因个人情况可以做出一点小的项目出来,将所学运用到实践。实践的过程中我们会遇到许多问题,我们可以通过不同的方式来解决问题,提高我们解决问题的能力。例如我在学完51后做了一个麦轮小车,学了一些32后又做了一个四轮的小车。做完后很有成就感,同时又对以前所学有了新的了解。在不断的学习与试错中前行,我们终将走的更远。