返回目录:word文档
说起这个HAL库,真的是初学者的福音啊,简单的开发再也不用特意的去关心物理层的好多东东了。况且对于TI,标准库已经失去更新和技术支持了。HAL库才是大势所趋。
再说STM32CubeMX,更是初学者偷懒的好武器,图形化芯片配置软件,直接生成对应的初始化代码。输出直接就是HAL库,好多功能可以直接调用了。对于我等英语不太好的菜鸟来说太方便了。
不说怎么安装STM32CubeMX和MDK-ARM了。。。初学者请自行百度,安装的时候注意这两个软件对中文目录支持都不太好就行了。。。
需要准备的材料和要理解的内容:
材料:1、STM32下载器一个,这个看你心情,串口,J-LINK,u-link,SWD 自己选择咯。反正最终结果都一样。
2、STM32实验板或者核心板一块,面包板可选。
3、LED一个、27欧电阻一个(可选,我没用,也没烧掉LED)、导线若干。。。
4、电脑一台{无所谓配置。灵活好用就行。}。
5、脑子一个{无所谓配置。灵活好用就行。}
外围电路原理图(简单到我都不好意思画出来。。。):
1、HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
端口写入函数:括号内分别代表:端口,端口针脚,端口要被设置的参数(SET是高电平,RESET是低电平)。
2、HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);
端口翻转函数:括号内功能同1.。。。
3、HAL_Delay(1000);
库自带的延时函数,括号内数字的单位是ms(这个函数在后期的一些带有复杂中断程序上会出岔子,以后遇到再说...).
好了。要了解的,和准备的就这么多,下面安图开工就好。。。实在不理解的,请自行百度,我这文采我自己也是醉了。。会用不会表达。。。
1、开SM32CubeMX,点 NEW Project
2、选择单片机型号(我的是STM32F103RCT6,所以最后选择STMEWF103RCTx)
3、pinout页面:配置RCC时钟、配置端口,我用PB0来接LED。点击PB0,在弹出的菜单选择GPIO_Output.
4、clock configuration页面:如图配置时钟,注意PLL部分,选择HSE,8M,9倍频。。其他部分可以忽略。以后用到再说。
5、设置生成代码的选项,代码保存位置自行选择。。不必和我一摸一样,但是最好没有中文目录。
tool chain/IDE这里,我用的MDK-ARM5,我就选择这个了。看大家喜好,你用的什么集成环境,这里就选择 什么就行了
6、代码选项:一定要这样设置,至于为什么。。。你自己百度每个选项的英文就好了。。我懒。。。不打字了
尤其那几个对勾,第三个不打勾的话,以后硬件有变动需要重新生成代码的时候,小心你自己在main里面些 的代码会灰飞烟灭哦。。。
7、点击上面的设置都好了,点击左上角project菜单,generate code,稍等会提示你代码生成了,直接选择 open project 就可以,。
8、IDE里面已经打开的main.c,对于STM32CubeMX生成的文档,你自己要加入的代码一定要写入到
/* USER CODE BEGIN */和/* USER CODE END */之间,看你代码功能,写入到相应的区域。不要一通乱 写,否则cubeMX重生成代码的话会覆盖你自己写的那些,很悲剧的。
注意94、104、105,就这三句话,就搞定了一颗LED的闪烁。是不是看起来比用标准库来点亮一个LED容易的一逼。。。
94行HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);,在while之前初始化一下PB0,先给他一个高电位点亮LED。
104行HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);翻转一下PB0的端口状态,由高电平翻转位低电平。
105行HAL_Delay(1000);做个1秒的小延时。
程序运行起来会不停的在104、105两行之间循环,也就是让PB0每隔一秒翻转一下状态,直观的就是LED会亮一秒,灭一秒啦。。。
9、程序写完啦,设置一下IDE,点击魔术棒图标,选择output图标,给 create HEX file打勾,保存。然后按下F7就搞定啦。。。编译好的HEX文件会被保存在XX:\\...用户目录...\\LED\\MDK-ARM\\LED 下面。
我图便宜,买的一个USB转TTL线缆。。 只能选择官方的串口下载器了。。。如下图。。。
最后:上个视频,运行效果。。