嵌入式软件--stm32 DAY 1

发布于:2025-04-18 ⋅ 阅读:(24) ⋅ 点赞:(0)

一、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!


网站公告

今日签到

点亮在社区的每一天
去签到