从KEIL编写F1到RT-Thread F4嵌入式系统开发:简谈STM32该怎么学
本文涉及技术:开发环境,STM32基础,嵌入式开发,RT-Thread stdio,MDK-ARM,STM Cube MX
STM32介绍
我们常说的STM32是意法半导体(ST)推出一款32位的单片机。STM32具有超低的价格、超多的外设、丰富的型号、优异的实时性、极低的开发成本等优势。STM32凭借其产品线的多样化、极高的性价比、简单易用的库开发方式,迅速在众多32位单片机中脱颖而出。
STM32芯片内部可以粗略划分两部分:内核+片上外设。如果与电脑类比,内核与片上外设就如同电脑的CPU与主板、内存、显卡、硬盘的关系。
ARM公司只设计内核不生产芯片,他会将有关内核的技术授权给各半导体厂商例如ST、TI、Atme1、NXP等厂商。这些厂商都是基于这个内核自己设计片上外设如SRAM、ROM、FLASH、USART、GPIO等,然后集成到一个硅片上,这就是我们现在用的芯片。
在这一众芯片中,最常用的就是F103C8T6与C6T6,二者最大的差异仅仅在于闪存容量不同,而ZET6和ztg6仅仅是芯片的引脚数量不同,因此如果你的代码是zet的芯片,可以直接低版本升级到zgt;反过来如果你的代码是zgt,引脚没有用到靠后的引脚,仅用到AB组,也可以降级到C6T6使用,然而F1与F4的代码并不互通(原因在于芯片内部分频器(PHB与APB等等)不同名,最高支持频率也不同,),因此并不可以将f103的代码移植到F407。在入门之后,可以尝试使用F407ZGT6来进行下一步的学习,如学习实时操作系统。
KEIL:
大家常说的Keil,其实指的是一款开发工具。同时,Keil也是一家公司名称。
Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。Keil公司由两家私人公司联合运营,分别是德国慕尼黑的Keil Elektronik GmbH和美国德克萨斯的Keil Software Inc
Keil公司2005年由ARM公司收购。其两家公司分别更名为ARM Germany GmbH和ARM Inc。
目前Keil有四种产品(软件):MDK-ARM、C51、C251、C166。四种软件都是基于µVision,在用法上极为相似。目前我们使用的很多的就是μvision5或4,据说6也快发布了。在上面的四款软件中MDK-ARM是我们目前最常用的,其次是c51和C251.
MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境。 MDK-ARM专为微控制器应用而设计,而且功能强大,能够满足大多数苛刻的嵌入式应用。
与Keil MDK4及之前版本不同,Keil MDK5分成MDK Core和Software Packs两部分。MDK Core主要包含uVision5 IDE集成开发环境和ARM Compiler5。
Software Packs则可以在不更换MDK Core的情况下,单独管理(下载、更新、移除)设备支持包和中间件更新包。一些时下流行的软件包都可以用Software Packs下载安装(很可能下载不下来,这个时候就需要去软件包下载地址下载下来,手动安装)
MDK-ARM有四个可用版本,分别是MDK-Lite(免费评估版)、MDK-Essential(基础版)、MDK-Plus(标准版)、MDK-Professional(专业版)。所有版本均提供一个完善的C / C++开发环境(所以使用keil编写程序是c程序,后续的编译下载的过程会出现.o文件),其中MDK-Professional还包含大量的中间库。
keil下载:
官网下载: https://www.keil.com/download/product/
百度云盘:https://pan.baidu.com/s/1iaP2QfLcwf1OqOG6VOLOdA?pwd=tf12
提取码:tf12
keil界面使用说明:
keil界面简述
这里是激活,旁边的CID就是要复制到神秘音乐软件中的代码
在这里修改编码为GB2312,可以解决中文字删掉会乱码的问题
魔术棒!!keil的重要配置选项,设备型号选这里,晶振频率选这里,没有.H文件选这里,烧录不上去选这里,烧录上去了程序不运行还是选这里!
在这里选择你得设备型号
在这里注意设置晶振频率,旁边ARM COMPILER也可以换着玩,如果出现有关编译器的问题, 例如 core_cm3.c (445/465/479/499) 错误, 换上 ARM Compiler 5/6 能解决,(点开有啥换啥都试一遍)胆大细心电子人
这一页面是有关c语言的宏定义以及一些设置,文件,找不到 xxx.C xxx.H等等 include了的文件了,你就先在这添加,然后在另一个地方添加,俩地方都要加进去才行
添加目录1
这里是调试器配置,烧录不上去来这里找问题
连接后查看SWDIO是否有芯片ID码
烧录设置
在这里还要加入文件目录才可以!!!
Std标准库使用:
因为基于cortex系列芯片采用的内核都是相同的,区别主要为核外的片上的差异(片上外设主要有芯片生产商来定)。这些差异却导致软件在同内核,不同外设的芯片上移植困难。为了解决不同芯片厂商生产的cortex微控制器软件的兼容性问题,ARM与芯片厂商建立了CMSIS标准。CMSIS层位于硬件层和用户层之间,提供了与芯片生产商无关的硬件抽象层,提供软件接口,疲敝了硬件的差异。
CMSIS标准最为主要的是CMSIS核心层,它包括:
- 内核函数层:用于访问内核寄存器。由ARM公司提供。
- 设备外设访问层:提供了片上的核外外设的地址和中断的定义,这个主要由芯片生产商提供
std安装文件下载:
官方下载途径
STM32标准外设软件库 - 意法半导体STMicroelectronics
三个常用的std标准库下载:
百度网盘链接:https://pan.baidu.com/s/1ytMyePfxoB42inkKE_Qrwg?pwd=p9l0
提取码:p9l0这里给出f1XX与f4xx和RT-THREAD的标准库,安装后f1与f4的全系列芯片都可以使用标准库来编写程序
其他版本与其他型号的话列位请移步官方std库下载,
使用该库编写程序特点为为定义与初始化极其详细且复杂,但是结构完整方便我们文本式地检查结构与错误,因此野火电子与正点原子的例程与课程中都使用该库,技术实力非常不错但由于需要对定时器,中断,adc,dac 延时与位代极其复杂的操作,新手可能会非常难以学习,建议定时器,中断这些先从51单片机上手学习
野火电子哔哩哔哩网站:
【单片机】野火STM32F103教学视频 (配套霸道/指南者/MINI)【全】(刘火良老师出品) (无字幕)_哔哩哔哩_bilibil
【野火】STM32 HAL库开发实战指南 教学视频 手把手教学STM32全系列 零基础入门CubeMX+HAL库,基于野火全系列STM32开发板_哔哩哔哩_bilibili
正点原子哔哩哔哩网站:
【正点原子】手把手教你学STM32 HAL库开发全集【真人出镜】STM32入门教学视频教程 单片机 嵌入式_哔哩哔哩_bilibili
例:这是标准库的编写点亮LED需要手动编写的程序部分:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
//2.配置结构体
GPIO_InitTypeDef led_init;
led_init.GPIO_Pin = GPIO_Pin_13; //GPIOC13引脚
led_init.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
led_init.GPIO_Speed = GPIO_Speed_10MHz; //10MHz//3.对成员进行初始化
GPIO_Init(GPIOC, &led_init);GPIO_ResetBits(GPIOC, GPIO_Pin_13); //P13引脚输出低电平
GPIO_SetBits(GPIOC, GPIO_Pin_13); //P13引脚输出高电平
这是hal库的点亮LED需要手动编写的程序部分:
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,1);
HAL_Delay(1300);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,0);
HAL_Delay(1300);
从上可以看出两种库的语句特点。
STM32CUBE MX 配置与HAL库:
cubeMX下载:https://pan.baidu.com/s/1yI_7zAt2Z4neQGjOa1DOgw?pwd=rmt4
提取码:rmt4
不同于std标准库,hal库是时下比较方便的一种程序库,它的理念为编写STM32提供一种便捷简单且通用的方式,hal库将引脚通讯串口与协议串口制作成固定的选项模式,使用者可以直接使用图形化的操作界面来配置引脚,晶振时钟,串口,总线协议,一键生成MDK-ARM的hal库配置代码,进而在其中完整编写相关程序
在最开始的时候,hal库并不受开发者们推崇,由于其将配置引脚简化为一种排列组合外加更改参数编号的形式,熟练std的开发者都感觉被编程革命了,随着时间推移,hal库不断完善,真香定律也渐渐显现,实在是太便捷了。更重要的是,它并不与std库冲突,你完全可以使用cubeMX配置好hal库的初始化,使用std库写好的程序(先确保标准库正常)来完成配置。
推荐的HAL库学习视频:[STM32CubeMX&HAL库教学]快速STM32基础功能学习系列_哔哩哔哩_bilibili(关闭音频,提高画质认真看操作)
微雪电子的教程网站:STM32单片机笔记 STM32学习资料 教程 (waveshare.net)
RT-Thread:
本篇文章太长了,rtt部分移到下面的链接
RT-THREAD的STM32F4系列移植 – PopCater SKILL Introduction and sharing
本文作者:Pop-Cater
本文链接:https://www.cnblogs.com/POPCATER/p/18060029
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」