实训day2_1|了解硬件(粤嵌M4开发板芯片型号:STM32F407ZET6 内核:Cortex-M4)

本文主要是介绍实训day2_1|了解硬件(粤嵌M4开发板芯片型号:STM32F407ZET6 内核:Cortex-M4),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

嵌入式实训

  • 一、STM32的芯片选型
  • 二、STM32的开发方式
  • 三、STM32程序的下载方式

一、STM32的芯片选型

粤嵌M4开发板芯片型号:STM32F407ZET6 内核:Cortex-M4

STM32 — 32位MCU

F — 基础型

407 — 高性能

Z — 144个引脚

E — 512K

T — 封装 QFP (可以不用了解)

6 — 温度 -40 ~ +85

二、STM32的开发方式

STM32的开发方式大体分为两种:固件库开发(推荐) + 寄存器开发

固件库开发:

ST公司针对STM32芯片,开发了很多函数接口,目的就是为了降低开发人员的使用门槛,说白了,就是ST公司写了很多的函数供别人使用,开发人员就无须过多了解底层知识,只要学过C语言就可以轻松开发。

好处:

开发效率提高

代码可读性好

代码容易维护

坏处:固件库编写的代码要比寄存器编写的代码的运行效率大概低10%左右(可以忽略不计)

寄存器开发:

开发人员自己根据芯片的数据手册,去学习寄存器的使用方式,掌握底层开发的关键知识。

好处:

代码的运行效率高

坏处:

开发效率降低

代码不好维护

代码可读性不好

在工作中,绝大部分的情况都是使用固件库开发项目的,极少数情况下会使用寄存器开发

三、STM32程序的下载方式

STM32的程序下载方式:串口下载 + 下载器下载(ST-LINK、J-LINK、U-LINK…推荐)

\1. 安装J-LINK下载器的驱动

在这里插入图片描述

\2. 硬件接线方式

注意:先接GND(地),红色线接板子上的GND,另外三根依次接过去,红蓝黄黑

\3. 查看J-LINK驱动是否安装成功

在这里插入图片描述

\4. 配置KEIL5,选择对应的下载器

查看图示

\5. 编译程序,点击下载按钮,进行程序下载

在这里插入图片描述

在这里插入图片描述

====开发板介绍

在这里插入图片描述

芯片参数了解:

1.学会看文档手册

2.32位的Cortex-M4处理器,标准工作频率168M,支持FPU浮点运算和DSP指令

3.具有144个引脚,有114个IO口,大部分IO口都是容忍5V电压(模拟(ADC、DAC)通道除外)

4.CPU工作电压:1.7~3.6V电源电压

5.时钟系统

4~26M的外部高速(晶振)时钟

内部的16M高速RC振荡器时钟

内部32K低速RC振荡器时钟

内部锁相环(PLL,倍频),一般系统时钟(168M)都是外部或者内部高速时钟经过PLL倍频后得到的

外部低速32.768K晶振,主要是用于RTC时钟

HSE : H 高速 E 外部

LSE : L 低速 E 外部

LSI : L 低速 I 内部

HSI : H 高速 I 内部

168 = 8M * PLL(21)

注意:如果外部晶振失效,自动切换到内部的16M晶振振荡器

6.一般工作模式有三种:低功耗、标准功耗、高性能

低功耗:睡眠、停止、待机三种模式,可以使用外部RTC和备份寄存器供电

标准功耗:正常工作模式,168M频率

高性能:超频工作,提高芯片工作频率

7.AD

3个12位精度AD支持24个外部通道ADC转换、内部通道可用于内部温度测量

8.DA

2个12位精度的DAC

9.DMA:直接存储器访问

16个DMA通道

10.定时器:17个定时器

10个通用定时器 TIM2 和 TIM5 是32位

2个基本定时器

2个高级定时器

1个系统定时器

2个看门狗定时器

定时器是系统的非常重要的资源:实现定时、计数功能

12.通信接口

3个I2C接口

2个I2S接口

3个SPI接口

2个CAN2.0

2个USB OTG

1个SDIO

6个串口

开发板的芯片可用的IO口:

PA0~PA15 16个引脚
PA~PG + PH0 +PH1 == 114个可用IO

将main.c文件所有内容进行修改为下面

#include “stm32f4xx.h”

int main(void)

{

return 0;

}

创建好工程后-----------------------------------------------------------------------

若编译时出错
修改:

(1)删除stm32f4xx_it.c文件中第32行 #include “main.h”

(2)删除stm32f4xx_it.c文件中第144行 TimingDelay_Decrement();

然后:

修改system_stm32f4xx.c中第316行为

#define PLL_M 8

修改文件stm32f4xx.h中第123行代码为

#define HSE_VALUE ((uint32_t)8000000)

这篇关于实训day2_1|了解硬件(粤嵌M4开发板芯片型号:STM32F407ZET6 内核:Cortex-M4)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/356597

相关文章

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

C#实现获取电脑中的端口号和硬件信息

《C#实现获取电脑中的端口号和硬件信息》这篇文章主要为大家详细介绍了C#实现获取电脑中的端口号和硬件信息的相关方法,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。那么如果我们使用C#编写软件时候,如

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

如何安装HWE内核? Ubuntu安装hwe内核解决硬件太新的问题

《如何安装HWE内核?Ubuntu安装hwe内核解决硬件太新的问题》今天的主角就是hwe内核(hardwareenablementkernel),一般安装的Ubuntu都是初始内核,不能很好地支... 对于追求系统稳定性,又想充分利用最新硬件特性的 Ubuntu 用户来说,HWEXBQgUbdlna(Har

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern