1、【STM32】学习初探(方法及准备)

2023-05-16

前言

由于个人原因已经有好长时间没搞了,最近工作需要,但是拿起32基本上都忘记差不多了,接下来一段时间将急中学习一下STM32的基础知识。以前是学习的库函数版本,有一定的基础,因此这次入手准备直接从头开始学习寄存器版本的程序,有助于更加深的理解STM中对寄存器的操作。

重新拿出开发板,感到既熟悉又陌生,这篇博客先说一下学习准备,接下来的博客会更新后续实验。

学习方法

一、学习准备

2.1 C语言基础

学习STM32前C语言必须得过关,否则对于代码的理解和32的学习将会很难。

谭浩强的《C程序设计》第四版和第五版都行

2.2 开发环境的搭建

开发软件使用Keil uVision5

调试工具:JTAG、ST-LINK/V2

下载程序:可以直接使用调试工具下载,也可以使用串口下载,串口下载的时候需要用到串口助手

2.3 寄存器版本代码说明

掌握库函数的基本配置方法。了解寄存器底层配置过程,以便深入了解STM32芯片本质。

二、参考的资料(文档)

  • 芯片的内核(最底层):CM3/CM4权威指南(由ARM提供)
  • 芯片参考手册(功能寄存器特性描述):STM32F1/F4中文参考手册(由ST提供)
  • 芯片数据手册(芯片电气参数及引脚说明):STM32F407ZGT6
  • STM32F407开发指南—寄存器版本(这里使用的是正点原子的开发板)及其配套视频
  • 开发板原理图:Explorer STM32F4_Vxx_SCH.pdf

ST官方资料下载地址:www.stmcu.org

三、学习资源(硬件)

这里使用的是正点原子的STM32F4系列的探索者开发板,这里将开发板硬件资源做一下简单介绍,其具体介绍再不完全  手册前两章有详细介绍。大家做好也看一下。

ALIENTEK 探索者 STM32F4 开发板板载主要资源如下:
CPUSTM32F407ZGT6LQFP144FLASH1024K=1MSRAM192K
◆ 外扩 SRAMIS62WV512161M 字节
◆ 外扩 SPI  FLASHW25Q12816M 字节
2 个状态指示灯(DS0:红色, DS1:绿色)
1 红外接收头, 并配备一款小巧的红外遥控器
1 EEPROM 芯片, 24C02,容量 256 字节
1 个六轴(陀螺仪+加速度) 传感器芯片, MPU6050
1 个高性能音频编解码芯片, WM8978
1 2.4G 无线模块接口,支持 NRF24L01 无线模块
1 CAN 接口,采用 TJA1050 芯片
1 485 接口,采用 SP3485 芯片
2 RS232 串口(一公一母) 接口,采用 SP3232 芯片
1 路单总线接口,支持 DS18B20/DHT11 等单总线传感器
1 ATK 模块接口, 支持 ALIENTEK 蓝牙/GPS 模块
1 光敏传感器
1 个标准的 2.4/2.8/3.5/4.3/7 LCD 接口,支持电阻/电容触摸屏
1 摄像头模块接口
1 OLED 模块接口
1 USB 串口,可用于程序下载和代码调试(USMART 调试)
1 USB SLAVE 接口,用于 USB 从机通信
1 USB HOST(OTG)接口,用于 USB 主机通信
1 个有源蜂鸣器
1 RS232/RS485 选择接口
1 RS232/模块选择接口
1 CAN/USB 选择接口
1 个串口选择接口
1 SD 卡接口(在板子背面)
1 个百兆以太网接口(RJ45
1 个标准的 JTAG/SWD 调试下载口
1 录音头MIC/咪头)
1 路立体声音频输出接口
1 路立体声录音输入接口
1 路扬声器输出接口,可接 1W 左右小喇叭
1 组多功能端口(DAC/ADC/PWM DAC/AUDIO IN/TPAD
1 个参考电压设置接口
1 个直流电源输入接口(输入电压范围: DC6~16V
1 个启动模式选择配置接口

1 RTC 后备电池座,并带电池
1 个复位按钮,可用于复位 MCU LCD
4 个功能按钮,其中 KEY_UP(WK_UP)兼具唤醒功能
1 电容触摸按键
1 个电源开关,控制整个板的电源
◆ 独创的一键下载功能
◆ 除晶振占用的 IO 口外,其余所有 IO 口全部引出

STM32芯片学习内容

一、学习的内容

  • 芯片的初步了解

STM32F407用的是Cortex-M4内核,Cortex-M4采用的是ARMv7-ME架构

Cortex-M4内核,增加浮点运算和增强的DSP处理指令

168MHz高速运行时210DMIPS的处理能力

32位定时器(M3是16位的定时器)

STM32家族:405.407.415.429.437

二、基本资源

  • 基本外设:GPIO输入输出、外部中段、定时器(中断)、串口
  • 基本外设接口:串口、SPI、I2C、ADC/DAC、WDG、FSMC、SDIO等
  • 高级系统功能:UCOS、FATFS、EMWIN等

2.1 内核

32位 高性能ARM Cortex-M4处理器

时钟:168M  支持FPU(浮点运算)和DSP指令

2.2 IO口

STM32F4007ZGT6:144引脚 114个IO

大部分都支持5V(数据手册中FT的都支持,模拟通道不支持)

支持调试:SWD和JTAG,SWD只要2条数据线

2.3 存储容量

1024k flash   192  SRAM

2.4 时钟和电源管理

1.8v~3.6v电源和IO电压

上电/掉电复位、可编程的电压监控

强大的时钟系统

4~26M的外部高速晶振

内部16MHz的高速RC振荡器

内部32KHz低速RC振荡器,看门狗

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

外部低速32.768K的晶振,主要做RTC时钟源

2.5 低功耗

睡眠,停止和待机三种低功耗模式

可用电池为RTC和备份寄存器供电

2.6 AD、DA

3个12位AD[24个外部测量通道]

内部通道可用于内部温度测量

内置参考电压

 2个12位DA

2.7 DMA

16个DMA通道,带FIFO和突发支持

支持外设:定时器,ADC,DAC,SDIO,I2S,SPI,I2C,USART

2.8 定时器

17个定时器

10个通用定时器(TIM2和TIM5是32位)、2个基本定时器、2个高级定时器、1个系统定时器、2个看门狗定时器

2.9 通信接口

17个通信接口

3个I2C接口、6个USART(串口)、3个SPI接口、2个CAN2.0接口、2个USB OTG、1个SDIO

总结

目前就先准备这么多,之后随着学习后面的学习博客也会随之更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1、【STM32】学习初探(方法及准备) 的相关文章

  • 求先递增在递减数组中的最大值

    题目 xff1a 一个数组先从小到大递增在从大到小递减 xff0c 找出数组的最大值 思路 xff1a 可以依次遍历整个数组如果array i 满足array i gt array i 1 amp amp array i gt array
  • 哈希(HASH)冲突的处理方法

    通过构造良好的哈希函数可以减少冲突 xff0c 但一般不能完全避免冲突 因此解决冲突是哈希法的另一个关键问题 常用的解决冲突方法有以下四种 开放地址法 这种方法也称再散列法 xff0c 基本思想是当关键字key的哈希地址p 61 H key
  • 消息队列实现从一个进程向另一个进程发送一个数据块的方法

    首先是Comm h的代码 include lt stdio h gt include lt string h gt include lt sys types h gt include lt sys ipc h gt include lt s
  • 打开PADS出现“PADS已停止工作”提示的解决办法

    一 场景 前一天还可以正常使用 xff0c 今天处理完一些事务后点击PADS打算画一些PCB xff0c 结果弹窗出现 PADS已停止工作 xff0c 无论是打开PADS的Logic还是Layout文件都提示这个 xff0c 打开其他之前正
  • cmake解决动态库soname,rpath以及符号冲突解决方案备忘

    set target properties TGT PROPERTIES NO SONAME TRUE SKIP BUILD RPATH TRUE LINK OPTIONS 34 Wl version script 61 CMAKE CUR
  • KiCAD绘制原理图---------创建一个新的原理图符号

    1 创建一个新的原理图库文件 第1步 xff0c 打开原理图器件编辑界面 如图1 1 1所示 xff0c 点击 Smbol Editor 图标进入器件编辑界面 第2步 xff0c 进入文件管理菜单 如图1 2 1所示 xff0c 点击 Fi
  • ubuntu 查看内存命令

    Linux中使用free 可以查看系统内存使用状态 默认单位为KB 为单位 xff0c 在此我以MB为单位说明 lostman 64 lostman MS 6702E 桌面 free m total used free shared buf
  • Nvidia Xavier Nx平台SD卡热插拔检测失效问题调试记录

    1 前言 Xaiver NX上 使用sdmmc3为sd卡 正常工作 但是 当热插拔时会检测不到 使用GPIO12 GPIO3 PCC 04 作为cd gpio cd gpios lt amp tegra aon gpio TEGRA194
  • MobaXterm连接虚拟机超时:Connection timed out

    折腾了几个小时 来两句废话 1 首先我确认了虚拟机防火墙已关 2 ip配置无问题 3 重置VMware网络设置啥的 然而并没有卵用 4 虚拟机ping百度正常 主机ping虚拟机正常 以上4条依然无效 解决方案 原理不清楚 但是解决了 通过
  • Windows下python激活虚拟环境后仍然使用全局python和pip

    这么过分一定要发CSDN jpg 在windows下 xff0c 激活python虚拟环境后 xff0c 使用的python和pip仍然是全局的python和pip 如图 使用pip list 可以看到这个包这么多 xff0c 显然不是我刚
  • openmv 自学笔记(APRILTAG标记追踪)

    由图可知 id 为5 旋转角度 为11 0 左边旋转 角度增加 正式时候调度接近0 右边旋转 角度减少 由360度 向右减少 Tx 在左边的时候 为负数 右边为正值 Ty 在上边的时候为正数 左边为负值 Tz 从远处 到近处 由负数到向正数
  • 学习STM32(3)-电源、时钟、复位电路

    Stm32 时钟分析 该分析材料大部分来自opendev 论坛 xff0c 我所做的只不过是加上一些自己的分析和整理 xff0c 由于个人能力有限 xff0c 纰漏之处在所难免 xff0c 欢迎指正 一 硬件上的连接问题 如果使用内部RC振
  • 只是运行roslauch来发布一次TF

    如果只是希望运行roslaunch来发布一次TF xff0c 可以使用launch文件中的node标签来实现 下面是一个发布一次TF的launch文件例子 xff1a lt launch gt lt node pkg 61 34 tf2 r
  • 2019年年终总结(流水账)

    2019年年终总结 流水账 前言 马上就要是2020年了 xff0c 我此时敲下我的第一篇年终总结 马上就要过去的2019年对于我来说是平凡但却不平淡的一年 xff0c 这一年里我经历了很多 xff0c 虽然这些在别人眼中可能是微不足道的
  • 融资租赁与经营租赁的区别

    我现在手上项目的客户是一家销售公司 xff0c 他们有把自己的商品租赁给别的公司经营的业务 于是就有了上面的融资租赁与经营租赁 xff0c 这两种方式在财务上对资产的处理是不一样的 下面我们来看看这个场景 xff1a A公司把资产租给B公司
  • 【Linux网络编程(五)】TCP编程流程

    文章目录 TCP编程1 TCP介绍 编程流程2 TCP C S架构3 TCP客户端编程流程1 创建TCP套接字2 connect连接服务器3 send发送请求4 recv接收应答 xff08 默认带阻塞 xff09 5 close6 客户端
  • ESP32-Drone四旋翼无人机代码编译发现的二个问题及解决方法

    摘要 ESP32 Drone四旋翼无人机是乐鑫的一个开源项目 xff0c 我根据官方的硬件参考设计 xff0c 重新使用KiCAD绘制了原理图和PCB板 xff0c 并制作了控制板样板 xff0c 在配置了ESP idf 4 4编程环境编译
  • 小觅相机运行vins-mono

    小觅相机运行vins mono span class token function mkdir span p mynt eye vins catkin ws src span class token function cd span myn
  • 程序员改变世界,从未如此直观

    万万没想到 xff0c 包博士的代码让一个六岁的小学生哇哇大哭 这个让小学生流眼泪的 科学家代表 有非常漂亮的履历 xff1a 清华大学毕业 博士曾在斯坦福就读 xff0c 他现在是VIPKID的首席AI科学家 xff0c 带领四十多人的产
  • 【Linux系统编程(十五)】信号量

    文章目录 信号量1 信号量1 1 信号量的概述1 2 信号量的API1 2 1 初始化信号量1 2 2 信号量减一 xff08 P操作 xff09 1 2 3 尝试对信号量减一1 2 4 信号量加一 xff08 V操作 xff09 1 2

随机推荐

  • 【ESP32_FreeRTOS篇】

    FreeRTOS 是一款 开源免费 的实时操作系统 xff0c 遵循的是 GPLv2 43 的许可协议 这里说 到的开源 xff0c 指的是你可以免费得获取到 FreeRTOS 的源代码 xff0c 且当你的产品使用了 FreeRTOS 且
  • 【FreeRTOS(十四)】StreamBuffer

    文章目录 数据流创建 xStreamBufferCreate发送 xStreamBufferSend接受 xStreamBufferReceive查询流缓冲区 xStreamBufferSpacesAvailable代码示例 数据流 创建
  • 【FreeRTOS(十五)】MessageBuffer

    文章目录 MessageBuffer创建 xMessageBufferCreate发送 xMessageBufferSend接收 xMessageBufferReceive代码示例 MessageBuffer 创建 xMessageBuff
  • 【Git】Git修改 commit 的信息

    Git 修改 commit 的信息 xff1a git log 查看提交日志 xff0c 找到要修改的commit xff1a git rebase i HEAD n 1 切换到需要修改的 commit 中 xff0c n为commit的序
  • PX4飞控之PWM输出控制

    PX4飞控之PWM输出控制 多旋翼电调如好盈XRotor xff0c DJI通用电调等都支持PWM信号来传输控制信号 常用的400Hz电调信号对应周期2500us xff0c 一般使用高电平时间1000us 2000us为有效信号区间 xf
  • 记录docker+github的学习历程

    最早从github上拉代码 xff0c 拉一些纯python的代码 xff0c 然后第二天就发现如果只是为了学习代码 xff0c 直接下载压缩包完事 为什么需要docker 43 github呢 xff1f github上的代码是不同的运行
  • 为什么同样的方法,你做的品牌火不起来?别人却能脱颖而出?

    要想让品牌快速走红 xff0c 必须做好品牌运营 同样进入红海市场 xff0c 江小白 喜茶 丧茶靠品牌运营 xff0c 快速占据一席之地 同样是知名品牌 xff0c 杜蕾斯靠品牌运营 xff0c 牢牢占据用户心智第一位 xff0c 同类目
  • 开发自己的DJI四旋翼无人机(A3飞控Onboard SDK和Mobile SDK介绍)

    大疆作为无人机行业的佼佼者 xff0c 其应用范围从户外旅行 拍照到影视拍摄 xff0c 以及工业运用都有着极高的地位 那么 xff0c 我们如何仅仅使用大疆的飞控来开发出我们自己的无人机呢 xff1f 首先 xff0c 你需要如下的东西
  • PID的曲线

  • ESP-Drone四旋翼无人机控制板上的MPU6050陀螺仪芯片I2C总线测试

    1 摘要 一款新的控制板卡在第一次使用时 xff0c 都需要进行硬件功能的测试 xff0c 以确保所有的硬件都能够正常工作后 xff0c 才可以进入后续的软件编程阶段 xff0c ESP Drone四旋翼无人机的控制板使用了mpu6050陀
  • PHP 设计模式之最全面,最简单的讲解

    1 单例模式 单例模式是指只创建一个资源 对象 数据库链接等 xff0c 防止外部实例 43 判断是否有返回或创建后返回对象 三个要点 xff1a 1 需要一个保存类的唯一实例的静态成员变量 2 构造函数和克隆函数必须声明为私有的 xff0
  • 快速看懂(找到)VUE框架的管理系统代码

    前言 刚入职的且没有啥基础的小白一枚 xff0c 培训期间要求一周时间内在现有demo系统上新增一个模块 xff0c 实现简单的增删改查 so xff0c 这是一个速成的帖子 xff0c 提供一个大致思路 xff08 看代码 xff0b 修
  • 解决k8s.gcr.io问题

    kubeadm安装新版本的Kubernetes过程中 xff0c 需要从k8s grc io仓库中拉取所需镜像文件 xff0c 但由于G F W导致无法正常拉取 xff0c 本文将介绍如何绕过此问题 xff0c 来完成业务的部署 ERROR
  • C++很难吗?到底有多难?

    C 43 43 他爹Bjarne Stroustrup都曾开玩笑说自己已经搞不懂C 43 43 了 xff0c 他也曾多次表达过C 43 43 似乎已经有点太庞大了 其实也不是说C 43 43 语法多么复杂 xff0c 而是C 43 43
  • C++开发需要掌握哪些技能?

    一 语言基础 无论C 43 43 开发还是Java开发 xff0c 对于码农来说 xff0c 最重要的是熟悉编程语言 同理 xff0c 无论从事何种工作 xff0c 首当其冲的就是要掌握好语言基础 C 43 43 是一种博大精深的编程语言
  • 如何成为一个优秀的C++开发工程师?

    目前主流的后端开发语言有很多 xff0c 而C 43 43 开发语言 xff0c 就是其中的一种 xff0c 并且有很多人想要成为C 43 43 开发工程师 那么如何才能成为一名优秀的C 43 43 开发工程师 xff1f 掌握游戏开发之物
  • 深入了解C语言和C++哪个更难?

    众所周知C语言与C 43 43 都是主流的开发语言 xff0c 并且在大多数人看来C语言的学习难度要更难 xff0c 那事实是怎么样的呢 xff1f 接下来小编带你深入了解下C语言和C 43 43 哪个更难 xff1a 深入了解C语言和C
  • ffmpeg分析 之 如何解析mpegts流

    转 xff1a http blog chinaunix net uid 20364597 id 3530284 html ffmpeg分析 之 如何解析mpegts流 2013 03 19 11 02 40 分类 xff1a LINUX 数
  • 使用input上传图片并本地预览

    话不多说上代码 span class token operator lt span div id span class token operator 61 span span class token string 34 app 34 spa
  • 1、【STM32】学习初探(方法及准备)

    前言 由于个人原因已经有好长时间没搞了 xff0c 最近工作需要 xff0c 但是拿起32基本上都忘记差不多了 xff0c 接下来一段时间将急中学习一下STM32的基础知识 以前是学习的库函数版本 xff0c 有一定的基础 xff0c 因此