当前位置: 首页 > news >正文

嵌入式软件--stm32 DAY 1

一、STM32概述

1.ARM内核

ARM是一家英国公司。后被日本软银收购。

RISC(精简指令集计算机)

产品:ARM架构处理器,相关外围组件的电路设计方案

怎么卖 :知识产权授权 只卖方案不卖具体产品

买了如何用 拿到ARM的方案  设计产品 卖钱 分钱给ARM ARM躺着赚钱

ARM然后是处理器架构几乎所有的移动端处理器均采用ARM授权方案设计


ARM处理器架构发展:

一个芯片就是一个计算机的架构。

补充:除了精简指令集,还有复杂指令集CISC,比如英特尔公司的X86.

2.STM32

ST公司设计的一系列以ARM Cortex-M为核心的32位微控制器。

STM32因其灵活性和强大的处理器被广泛应用。

3.命名规范

4.STM32开发方式

 直接基于寄存器开发

优点:代码执行效率高 对硬件理解深入 有利于新手学习STM32知识  更换其他芯片上手快

缺点:开发效率低  代码移植不方便

基于标准库函数开发

优点: 相比寄存器开发效率提高 相比寄存器开发难度降低 相比寄存器开发移植容易

缺点相当致命,废弃!

基于HAL库函数开发

                         

5.开发工具选择

(1)Keil MDK(老牌):

目前国内主流的单片机开发工具,历史悠久,调试功能强大,网上资料多。一款通用的IDE,兼容市面上大部分单片机。

代码编辑能力比较弱,代码联想功能贼差!关键是收费!!!

IAR(老牌):主流 兼容大多数单片机 代码编辑能力不好用 收费

(2)STM32CubeIDE(ST官方推出):

ST官方软件,对STM32开发相当友好。

免费!免费!免费!

(3)Clion(工具新星)

6.Keil MDK的下载和安装

(1)介绍

(2)下载

官方下载地址:Keil Product Downloads

之后无脑安装即可。安装目录与之前下载的51 keil区分开。

步骤我就不过多阐述,下面是大佬的分享链接,转载自csdn。

https://blog.csdn.net/2301_78660211/article/details/136633627?sharetype=blogdetail&sharerId=136633627&sharerefer=PC&sharesource=zx18831955136&sharefrom=from_linkhttps://blog.csdn.net/2301_78660211/article/details/136633627?sharetype=blogdetail&sharerId=136633627&sharerefer=PC&sharesource=zx18831955136&sharefrom=from_link

(3)Pack installer

Keil MDK 与前面学过的Keil C51不一样,并没有内置STM的MCU,所以需要手动安装。

下载芯片支持包(Keil提供):Arm Keil | Devices  根据自己使用的芯片型号下载对应的芯片支持包。

二、开发板

1.实物图

2.原理图

LED1 PA0

LED2 PA1

LED3 PA8

3.stm32最小系统

4.电源

采用3.3V电源供电。我们电路采用了两路供电。

一路是USB的TypeC供电, TypeC提供的是5V,使用芯片AMS1117把5V转成3.3V。

另一路是STLink下载器直接提供3.3V供电(下载器内部已经把5V转成了3.3V)。

MCU电源

USB供电转3.3V

MCU调试口

5.时钟

STM32提供了两路外部时钟:外部高速时钟和外部低速时钟。

6.复位

7.下载调试

三、STM32提前验证

1.安装烧写器驱动

连线烧写调试线

2.固件升级

下面是检验是否升级成功,只要出现debug。

3.烧写工具

无脑安装

如果缺失dll文件或者应用程序错误,就是dll文件缺失或损坏错误。

前往C盘的Windows文件夹下的SysWow64文件夹(电脑一般都是64位的),将缺失的dll填补进去。

 四、案例(寄存器)

1.需求

点亮一个LED灯

2.硬件电路设计

LED1 PA0  黄   给低电平,灯亮

LED2 PA1  蓝

LED3 PA8  绿

3.架构

创建stm32文件夹

为stm32文件夹下创建01_led_register

继续创建两个文件夹

启动文件Start,

核心支持的文件必须得要的。

然后设备支持的文件

再点进去startup

这里的文件不是每个都要的。要知道stm23f10x系列太多了,要找到对应103系列的。手册里面是有启动文件选择标准的。

我们用大容量芯片,hd.s文件。这些文件都可以归入启动文件夹。

还有用户基本的文件,里面要有最基本的main.c文件。

 

在Keil里面创建项目

在01_led_register文件夹下创建文件名为led_register的项目。

打开keil,点击创建新项目,在下图位置创建。自己写文件名 led_register

然后需要做选择。找到103,找到ZE.

点击ok之后出现下图,我们现在不需要关掉即可。 

 

我们的文件位置就会生成工程文件。双击即可打开。 

然后KEIL工程里面需要自己添加一些文件

项目创建好了!

记住!写完程序后先点生成再点烧录。

4.编译器配置

这些用了标准库文件,我们的keil版本是有需求的。我们需要第五版编译器,这个可以添加。

添加完成。

在这里可以选择版本。

5.写代码

将编译码格式改UTF8,方便写中文注释能看清。

第一步开启时钟,要用的就开启,不用的就不用开。我们要点开LED灯。看原理图都是 PA0 PA1 PA8引脚,GPIOA时钟。

基地址0x4002 1000     偏移地址0x18

C语言中没有32位字符型,就强转为*(uint32_t *)

开启时钟,配置输出,输出低电平

#include <stdint.h>int main(void){//1.时钟配置,开启GPIOA时钟*(uint32_t *)(0x40021000+0x18)=4;//2.配置PA0 PA1为输出*(uint32_t *)(0x40010800+0x00)=0x33;//配置PA8为输出,根据数据手册8在高寄存器,偏移地址0x04*(uint32_t *)(0x40010800+0x04)=0x03;//PAO,PA1,PA8输出为低电平*(uint32_t *)(0x40010800+0x0C)=0xfefc;while(1){}}

经过一系列配置后便可以构建和烧写了。

 

 

 

 

黄灯就亮了。PA0代表的LED!

相关文章:

  • 每日算法-链表(23.合并k个升序链表、25.k个一组翻转链表)
  • 用Prompt 技术【提示词】打造自己的大语言智能体
  • 第十六届蓝桥杯大赛软件赛省赛 C++ 大学 B 组 部分题解
  • UEFI Spec 学习笔记---12 - Protocols —CONSOLE SUPPORT(一)
  • 网络安全知识点2
  • 前端api(请求后端)简易template
  • 多模态模型 Grounding DINO 初识
  • HFSS(李明洋)学习记录1
  • 算法:双指针(快慢指针|对撞指针)、快排、模拟、二分、贪心
  • 4月17号
  • Ubuntu利用docker搭建Java相关环境问题记录
  • 影视产业链中的律师角色以及合规风控要点
  • Electricity Market Optimization 探索系列(VII)- 直流潮流方程的推导及例题
  • 自然语言处理(NLP)领域大图
  • 速盾:高防CDN访问多了会影响源站吗?
  • 闭坑-- `a-auto-complete` 组件中的 `options` 数据存在重复
  • STM32 F103 标准库CH452A 4线 数码管驱动芯片显示数码管
  • LVS+Keepalived+dns高可用项目架构
  • Obsidian无门槛简明教程
  • 写项目时一些疑惑:组件间的通信、createDownloadUrl和DownloadUrl,ArrayBuffer与Blob等
  • 上海浦东单价超10万楼盘228套房源开盘当天售罄,4月已有三个新盘“日光”
  • 下任美联储主席热门人选沃什:美联储犯下“系统性错误”,未能控制一代人以来最严重的通胀
  • 高璞任中国一汽党委常委、副总经理
  • 新华时评·首季中国经济观察丨用好用足更加积极的财政政策
  • 来论|这无非就是一只“纸老虎”:评特朗普政府“关税战”
  • 一季度煤价持续下探,多家煤炭巨头营收下滑、净利润降约两成