原来STM32单片机的开发如此的简单
大家好,我是
华维今天我们讲下用STM32CubeMX和Keil5点亮一个LED ,这个项目比较简单,大家都可以尝试下。
这个就是我们今天的主角,这款单片机芯片是STM32F030K6T6。
这个开发板非常简单,里面的芯片是STM32 F030 K6 T6,它有32个引脚,在它旁边这个一个八兆的晶振,然后晶振左边是电源芯片,可以把5伏电压转换成3.3伏电压给单片机供电。开发板右侧有一个按键reset按键,旁边是下载口。
为什么用这个芯片呢?因为这个芯片它非常便宜啊!在网上买的价钱才几块钱,这整块开发板下来才十多块钱包邮,对于一些刚刚开始学单片机的童鞋来说它的功能够用,重点它很便宜哈哈哈。
废话不多说,开始实操吧!
第一步
我们首先打开CubeMX,然后输入芯片的型号STM32F030K6T6,可以看到封装LQFP32,然后32K的flash,4K的RAM,25个IO口,最高工作频率可以达到48兆。
第二步
打开操作界面,先把芯片的串行下载口打开。选中Debug serial wire之后,我们可以看到时钟和IO这两个针脚已经显示绿了也就是生效状态,这样就可以往里面下载程序。
第三步
把要控制的led对应的io口状态配置成输出状态,选择GPIO output。
第四步
配置时钟,晶振暂时就不用了,直接用内部的RC振荡器就好,频率选4x9,它的频率就是36M。(用RC呢,最高就是36M)
第五步
打开midi文件找到main函数,HAL库初始化,系统时钟配置,GPIO初始化,然后看到while(1),我们的程序就写在这。
我们知道要想让led闪烁起来,必须让他对应的IO口先置低电平,然后再置高电平这样无限的循环下去灯就会闪烁起来。
第六步
先用HAl库函数来先写第一句,置PB7低电平,然后来一个延时500毫秒。置高电平就把上面的程序拷贝下来,把reset改成set就可以了。
第七步
然后我们再设置一下编译参数,输出这项用户信息可以去掉,不然的化编译太慢。
第八步
然后下载选项里边我们选上Reset and Run,至于其他的选项就不用管它了。
第九步
开始编译程序,编译完成0错误,0警告,这就代表程序已经编译好了。
第十步
就要把编译好的程序下载到单片机里边,然后把数据线插上,把这个下载器插到usb接口里链接电脑之后就可以看到led已经亮起来了。
但是因为里面没有程序呢,所以这个灯是不受控的,他只是简单地亮起来。
第十一步
把我们刚写好的程序下载到单片机里,点击程序的Load按钮直至下载完成。程序已经下载成功之后我们会发现单片机上的灯已经一闪一闪的亮起来了,亮0.5秒,灭0.5秒。
总结
在这1个小项目里面我们学到了几条的HAL库函数语句。分别是给端口置高低电平、延时语句,还有端口电平反转语句。
怎么样,看了这期干货之后,是不是觉得STM32单片机的开发特别简单呢?心动不如行动,你也赶紧试一试吧。
遇到任何问题,找我华维为你解答一切疑难杂症
文字:华维
回复“入门资料”获取单片机入门到高级进阶教程
stm32单片机零基础怎么入门,用什么语言编程?
我们随便在招聘平台搜”嵌入式开发”这个职位,看到很多职位都要求会STM32,为什么?
我个人也用了STM32单片机几年,感觉非常爽,后面做产品能用ST的基本不用别的。
主要原因有以下几点:
1. 对这个芯片比较熟悉了
2. 比较稳定
3. 资源丰富,价格也合理(最近涨价除外)
4. 资料多,有问题能很快解决
5. 不用配置寄存器就能很轻松把外设开起来
其实除了STM32,STM8用着也很不错,虽然是用IAR开发环境,但开发方式都是调库,
大大缩短了产品开发周期。
一般做低功耗的产品,我都首选STM8L系列的单片机。
既然STM32的芯片市场需求这么大,作为开发者来说,想适应市场就必须去学习。
Stm32有人说简单,也有人说难,实际到底是怎么情况呢?
我个人感觉STM32还是比较简单的,就看你怎么学了,至少对于应用来说,很简单也方便。
如果你站在刨人祖坟的角度去学习,会很难!
如果你只想把它当工具用,学习会很简单。
在接触STM32之前,我已经有几个项目的经验了,虽然是用STC和NXP单片机。
但是单片机无非就是那么回事,配置寄存器控制外设,最后外设去控制电路实现产品的功能。
大概就是这么个原理,区别就是不同的单片机外设资源不同,以及配置方式不同。
有些单片机是需要自己手动去配置寄存器的,比如说51单片机,NXP(几年前是,现在不知道有没有提供库)。
有些单片机是直接提供了标准库给你调用,通过调用库函数就能把单片机外设开起来,典型的就是STM32。
这样就会产生一个问题。
如果你之前没接触过51单片机,一上来就干STM32,你很难去理解配置寄存器开外设的流程。
这样相当于给你的学习过程埋下一颗定时炸弹,随时都会爆,具体体现就是你每学一个知识点都会有很多搞不懂的地方,这就是基础知识缺失导致的。
所以,我一直要求的我学员,我不管你有多聪明,必须从51单片机开始学习。
而事实也证明,看似你直接从STM32是走了捷径,实际所花的时间比从51开始学习要多,理解也没那么深。
不管你是入门51还是STM32单片机,如果自学的话,最好是购买一块开发板。
然后对照着开发板配套的视频教程,每看完一个章节都会亲手做一个实验。
顺利的话,基本上半个月就能上手了。
单片机编程一般通过两种语言:
1. 汇编
2. C语言
现在汇编一般用得少,只有那些RAM和ROM非常小的单片机才会用汇编去开发。
大多数都是以C语言为主,所以我建议前期只学习C语言就可以了,我做了10年基本没用汇编开发过产品。
偶尔一些启动文件要用汇编改,比如说移植系统,修改堆栈大小。
这些都非常简单,直接搜一下相关指令看下什么意思就行了,没必要为此系统去学习汇编。
我当初根本没系统去学过STM32,都是有产品用到了,我就顺势买了个开发板(主要是要他们开启外设的例程),视频我都懒得看。
有例程以后,从代码基本上可以看得出来是什么意思,单片机都大同小异。
比如说配置IO口,我们先要把GPIO时钟打开,然后选择你要配置的引脚,设置输入还是输出模式,输出模式又分上拉、下拉、推挽、开漏等等。
最后就可以控制IO输出高低电平了,如果你有别的单片机基础,很快就能上手。
别人提供固件库给你,出发点就是不想让你浪费时间去理解芯片复杂的寄存器配置。
很多人学不会就是这里走了弯路,研究STM32数据手册去配置寄存器,几百上千个寄存器想看完不现实。
所以,学习STM32,方法很重要!
相关问答
stm单片机 如何烧 程序 ?STLink是意法半导体推出的用于ST系列单片机的程序烧录器,主要适用于STM8单片机和STM32单片机,具有20针的接口和4针的接口两种形式。其中,STM8单片机会用到四...
单片机stm 是什么意思?STM单片机,是一款性价比超高的系列单片机,功能及其强大。优点:专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M内核,同时具有一流的外设...
STM单片机 编程是不是很难学?不难学的,先把51学会,再学STM32,不然STM32的寄存器会把你搞晕的,STM32的寄存器要比51多好几倍,当然功能也比51要多得多,推荐看正点原子的《例说STM32》,带...
stm 和stc 单片机 的区别?STM32属于arm内核的一个版本,比传统的51单片机高级多了,有很多资源是51不具备的,如usb控制器。而且已经废除了机器周期什么的,速度不是51能比的。单片机,通...
stm单片机 怎么控制外部开关?答stm单片机通过stm32输出一个电压(3v左右),而STM8S单片机本身就直接接在电池上,利用单片机的停机模式,将单片机本身的电流降低到μA级控制一个开关的通断。...
初学者如何快速上手 单片机 ?如果需要快速学习好单片机,要从几方面做好准备:第一,硬件上的准备。器件资料首先得熟悉;芯片架构及指令集得清楚;芯片的外围电路设计从原理到器件选型要掌...以...
如何开始 STM 8S系列 单片机 的开发?这跟单片机没关系,这是C语言的库函数使用时只需将putc函数(被printf函数调用)换成串囗发送函数即可,换了之后优先调用用户编写的putc函数这跟单片机没关系,...
51单片机和 stm单片机 的区别?两者的主要区别如下:1、内核:51单片机采用的是51Core,8Bit@2MHzMax(分频后),0.06DMIPS;STM32采用的是ARMCortex-M3,32Bit@72MHz,1....
如何在 单片机 装Linux系统?按道理来说有这几年经验,应该已经熟悉了几款单片机,像stm系列或者ti的,这样应该对soc的体系结构比较了解,一般单片机是在Windows下开发,熟悉一些总线,熟悉...
51 单片机 怎么改成 stm ?51单片机到STM32的过度,不困难,仅体现在单片机寄存器的配置上,下面分几个方面进行说明。1.从外围电路层面的过度在产品设计中,单片机往往是核心,产品的不...