STM32学习笔记(1)——STM32基础知识

4 篇文章 32 订阅
订阅专栏

❤ 2018.8.11

    最近入了STM32的坑,主要是马老师又有新项目,老师看我最近有点闲(哪里闲了?),就让我来协助,之前学了一些基础的东西了,不过没时间整理,现在准备补上。

    我学习使用的是野火stm32开发板,教程很详细,强烈推荐!

 

〇 STM32基础知识

❤ 2018.8.11

○什么是STM32

○ STM32有什么功能

 

○ 开发板的硬件资源

 

○ STM32分类

 

○ STM32命名方法

 

○ 引脚分配

 

○ 参考手册与数据手册

 

○ 数据手册中对引脚的定义

 

 

〇 什么是寄存器

○ STM32架构简图

○ 系统框图

○ 寄存器映射

关于寄存器映射,之前没有思考过,这么一说确实是认识上有不足。

之所以能够直接给寄存器赋值,是因为把地址作为指针定义到了寄存器别名里。

 

❤2018.8.12

○ STM32的位操作

和以前51单片机的位操作还是有很大区别的,习惯就好习惯就好。

 

○ STM32的寄存器是通过结构体的形式封装的

使用的时候可以这样

不过一般都是这样

    大概明白是什么个意思了,就是说结构体里面都是32位的地址偏移量,把结构体的首地址定义成对应的寄存器地址,然后用指针去调用就能访问相应的寄存器。不过最简单的方式是定义地址的时候就将他强制转化成指针,这样调用的时候就可以直接用了。

 

〇 新建第一个工程

○ 新建好工程后keil5不会自动提示拷贝启动文件,需要自己去st的官网下载相应的启动文件。

“【固件库】STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm”

大概是这么个路径。。。

○ 每个启动文件对应的单片机型号:

○ #include "stm32f10x.h"

 

〇 点亮一个LED灯

直接对寄存器操作是这样的

 

❤ 2018.8.17

〇 GPIO

○ GPIO简介

 

○ 引脚分类

 

○ GPIO功能框图

 

○ 推挽输出

♣ 推挽输出时,最高可以提供25ma电流

○ 开漏输出

♣ 开漏输出具有“线与”功能,一个为低,全部为低,多用于I2C和SMBUS总线。

 

○ GPIO输出初始化顺序

 

❤ 2018.8.18

〇 使用寄存器映射点亮LED

首先定义头文件

然后这样写代码

 

〇 构建库函数

○ 通过结构体形式映射寄存器

这样定义头文件

然后这样写代码:

♣ 我理解的是,之所以调用结构体的时候不需要用取内容运算符或者说宏定义的时候前面不加*是因为->运算符就是用来取内容的(?)

 

❤ 2018.8.19

○ 使用固件库初始化GPIO并点亮LED的程序这样写

 

 

〇 STM32固件库分析

 

❤ 2018.8.20

〇 新建一个固件库模板

○ 新建工程模板文件夹,如“Fwlib-Template”,下面新建如下文件夹:

○ 新建工程,选择相应芯片型号(这是需要提前在st官网下载相应芯片包并安装的)。

○ 在工程中target文件夹下新建相应group

○ 将官方库的相应文件拷贝到自己的工程模板目录中

· libraries:(将官方库的libraries拷贝过来之后调整目录结构)

· user:(这个是从官方库的例程里面拷贝过来的,除了main.c)

○ 将相应文件添加到工程中

○ 添加include path

○ 定义宏

♣ USE_STDPERIPH_DRIVER是为了使工程包含stm32f10x_conf.h

STM32F10X_HD是使头文件stm32f10x.h初始化为相应芯片型号(容量不同)。

 

○配置options

♣ use microlib是为了在编程中使用c的标准库

○ 添加一个清楚垃圾文件的命令行

○ 仿真器设置(dap仿真器)

先打开开发板

♣reset那里视频里说是autodetect,但是没找到,那就sysresetreq吧

♣ 更改了芯片型号之后仿真器设置一定会变,记得改过来。

 

〇 使用固件库点亮LED

· 拷贝固件库模板

· 在user里面新建led文件夹,新建bsp_led.c和bsp_led.h

· 打开工程,添加刚才的文件

· bsp_led.c添加头文件,并把头文件目录添加到include path里

· bsp_led.h添加条件编译语句

· 互相添加头文件

· 将跟硬件相关的都定义成宏,增加程序可读性

 

· 最后写成了这样

大概就是这样了。

 

· 加个延时,让灯闪烁

· 新花样,使用带参宏

 

· 新花样2,使用c语言里面的续行符使语句变短

♣ 续行符后面如果不小心有东西了就会报错

 

❤ 2018.10.7

好久没有学习stm32了,不过今天学到一个可以同时操作多个gpio的技巧,原贴在这里:

http://www.openedv.com/posts/list/0/62161.htm

我把代码改了一下,大概就是这样的:

初始化:

void GPIO_DefaultInit(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
     
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC \
                         | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF \
                         | RCC_APB2Periph_GPIOG, ENABLE);   //使能所有时钟
  
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |   \
                                GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 |     \
                                GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 |   \
                                GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;  //选中所有IO口
     
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;               //输出模式,推挽输出
    GPIO_InitStructure.GPIO_Speed  = GPIO_Speed_50MHz;                 //100M
    GPIO_Init(GPIOA, &GPIO_InitStructure);                  //初始化GPIOA
    GPIO_Init(GPIOB, &GPIO_InitStructure);                  //初始化GPIOB
    GPIO_Init(GPIOC, &GPIO_InitStructure);                  //初始化GPIOC
    GPIO_Init(GPIOD, &GPIO_InitStructure);                  //初始化GPIOD
    GPIO_Init(GPIOE, &GPIO_InitStructure);                  //初始化GPIOE
}

操作的时候也可以这样子。

一下子就腰不酸腿不痛一口气上五楼了呢!

 

❤ 2018.10.9

    昨天调录入系统的stm32程序的时候遇到了一个问题,stm32的GPIO总有三个端口不能工作,查询之后发现是PB3 PB4 PA15

,查看端口功能发现是JTAG的下载端口,又查资料发现这个端口在初始化端口时钟后默认是作为下载端口而不是作为IO口的。

    在一番百度之后发现了如下解决方法:

把STM32的JTAG下载引脚:JTDO、JTDI、JTCK 当成普通IO口进行操作

简单来说就是这样:

      1、打开复用时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

     2、调用重映射函数:GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);

 

    但是!

    出现了一个严重的问题,SWD下载不能用了!

    经过一番百度之后发现,GPIO_Remap_SWJ_Disable这个是关闭JTAG和SWD下载功能,GPIO_Remap_SWJ_JTAGDisable这个才是只关闭JTAG保留SWD。

    知道真相的我眼泪掉下来。。。

    虽然知道原因了但是下不了程序,于是又一番百度之后知道了这个方法:

    

  • 1、将板子供电全部断开,这里包括3.3V电源供电和JLINK等所有能给开发板供上电的设备全断开
  • 2、找到BOOT0引脚,将BOOT0拉高。
      方法:在板子上找一个高电平引脚,手动用导线将BOOT0连接到该引脚上即可。
      (注意:我的STM32板子供电是3.3V的,所以我找了一个3.3V的引脚,用导线连接到了BOOT0上,千万别弄错了,电平接高了不小心可是要烧坏板子的!)
  • 3、BOOT0拉高以后,保持这个姿势不要动,打开电源,重新给板子上电
  • 4、插上JLink或者STLink,下载程序。一般这次肯定可以下载进去了。下载完成以后,就可以断开BOOT0了,让他恢复低电平。

    链接如下:

stm32不小心把SWD和JTAG都给关了,程序下载不进去,解决办法

 

不过呢,直接把这几个GPIO口复用功能打开之后他们都是默认拉高的(其实也好像不全是),所以最后的代码是这样:

		//这四句的作用是将JTAG下载引脚PB3 PB4 PA15作为普通IO口进行的设置
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);	//打开复用时钟
		GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);	//调用重映射函数(关闭JTAG不关闭SWD)!!!
		GPIO_ResetBits(GPIOB,GPIO_Pin_3 | GPIO_Pin_4);
		GPIO_ResetBits(GPIOA,GPIO_Pin_15);

over

 

STM32基础笔记
shenzhou17的博客
09-24 2857
这篇文章是笔者学习STM32单片机基础开发过程中记录下来的心得与知识点的一个小总结,涉及STM32基础知识,常见的外设与部分协议,利用CubeMX开发实验的一些流程。希望对学者们有些帮助。
STM32基础知识(一)
Dir_x的博客
06-05 4329
STM32基础概念,STM32的分类,STM32的命名规则
STM32--STM32 微控制器详解
最新发布
Tanecious的博客
09-04 2140
名称含义:STM32 是意法半导体(ST)公司基于 ARM Cortex-M 内核开发的 32 位微控制器。其中,“ST” 代表 ST 公司,“M” 是微控制器(Microcontroller)的首字母,“32” 表示这是一款 32 位的单片机。性能对比:与 8 位的 51 单片机相比,STM32 的性能更强。ST 公司也推出了 8 位单片机 STM8。内部核心:STM32 内部的核心部分是 ARM Cortex-M 内核,由 ARM 公司设计。
STM32笔记记录
a53203556的博客
12-25 236
串口记录: STM32有好几个串口。比如说STM32F103ZET6有5个串口,串口1的引脚对应的IO为PA9,PA10.PA9,PA10默认功能是GPIO,所以当PA9,PA10引脚作为串口1的TX,RX引脚使用的时候,那就是端口复用。 复用端口初始化有几个步骤: 1) GPIO端口时钟使能。要使用到端口复用,当然要使能端口的时钟了。 RCC_APB2PeriphC...
stm32
huangchun96的博客
03-07 929
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核(ST's product portfolio contains a comprehensive range of microcontrollers, from robust, low-cost 8-bit MCUs up to 32-bit ARM-based Cortex®-M0 and M0+
STM32学习笔记
CWPIN21的博客
07-20 1526
嵌入式就是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于对于体积、可靠性、功耗、性能等方面有严格要求的专用计算机系统,要求嵌入式开发人员对嵌入式知识体系有清晰的认知。更简单的说,处理桌面PC和服务器之外,所有的控制类设备都是嵌入式。思考:通用计算机系统和专用计算机系统(嵌入式系统)之前的区别?两者的区别是技术要求和技术发展方向,通用计算机的技术要求是处理大量、高效的数据,而技术发展要求是总线速度的提升和存储能力的拓展。
关于STM32学习
weixin_33681778的博客
12-12 198
本文是对STM32F429串口通信程序的理解与体会。 int main(void) { u8 t; //循环变量 u8 len; //数据长度变量 u16 times=0; //计时变量 Stm32_Clock_Init(360,25,2,8); //设置时钟,180Mhz delay_init(180); //初始化延时函数 ...
STM32HAL库学习笔记六——串口通信
weixin_44762233的博客
04-25 4936
系列文章目录 文章目录系列文章目录通信的相关基本概念串口通信基本知识定时器与串口的综合应用一、实验目的二、cubemx配置三、代码编写 通信的相关基本概念 编码困难:1.字节长度与数据类型长度搞不清, 2.形参指针数组取地址搞不清 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 串口通信基本知识 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 定时器与串口的综合应用 一、实验目的 实现如
基于keil5的STM32F103的野火指南者学习笔记1——keil的配置
qq_40424866的博客
04-06 4707
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
STM32——学习笔记8
weixin_54950512的博客
02-21 310
STM32定时器开发基础 STM32的常见的定时器资源 ·系统嘀嗒定时器SysTick 这是一个集成在Cortex M3内核当中的定时器,它并不属于芯片厂商的外设,也就是说使用ARM内核的不同厂商,都拥有基本结构相同的系统定时器。主要目的是给RTOS提供时钟节拍做时间基准。 ·看门狗定时器WatchDog ·实时时钟RTC ·基本定时器:TIM6、TIM7 ·通用定时器:TIM2、TIM3、TIM4、TIM5 在基本定时器的基础上,实现输出比较、输入捕获、PWM生成、单脉冲模式输出等功能。这
STM32自学笔记》随书资料 高清电子版.rar
03-20
STM32L053R8-Nucleo.rarSTM32L053R8-Nucleo.rar
STM32学习笔记—野火
08-22
### STM32学习笔记——野火开发板解析 #### 一、基础知识介绍 **STM32**是一款基于ARM Cortex-M3内核的32位微控制器。本文将围绕野火开发板的学习笔记展开,深入剖析野火开发板的库结构及其在实际项目中的应用。 ...
STM32笔记
qq_44394562的博客
02-26 2702
1.2.1. 单片机是什么单片微型计算机(简称为单片机(,也称为微控制单元(Microcontroller Unit;MCU)也就是嵌入式微控制器。单片机是采用集成电路技术,将中央处理器CPU、随机存取存储器RAM()、只读存储器ROM()、Flash、多路IO、定时器、计数器、中断系统等设备集成到一块微型硅片上。可以将单片机看做一个小型且完善的计算机系统。1.1.3. 应用场景及就业方向1.1.3.1. 智能设备 单片机工程师 嵌入式工程师。
嵌入式stm32学习笔记
08-25
嵌入式STM32学习笔记是一种记录和总结学习STM32微控制器的经验和知识的方式。它可以包括以下内容: 1. STM32基础知识:了解STM32微控制器的基本概念、架构和特性。 2. 开发环境搭建:学习如何配置开发环境,包括安装编译器和调试工具。 3. STM32编程语言:熟悉常用的STM32编程语言,如C语言或汇编语言。 4. STM32外设驱动:学习如何使用STM32的各种外设,如GPIO、UART、SPI、I2C等。 5. STM32固件库和HAL库:了解STM32固件库和HAL库的使用方法和优势。 6. STM32项目实践:通过实际项目的实践来深入理解STM32的应用。 7. 调试与优化:学习如何使用调试工具进行程序调试和性能优化。 8. 实时操作系统(RTOS):了解如何在STM32上使用RTOS进行多任务处理。 9. 硬件设计基础:了解一些基本的电路设计知识,如电源、时钟、布局等。 10. 嵌入式系统开发流程:了解从需求分析到产品发布的整个嵌入式系统开发流程。 学习笔记可以按照不同的主题、章节或项目进行组织,以方便学习和回顾。同时,建议结合实际的例子和实验来加深对STM32的理解和掌握。
写文章

热门文章

  • Matlab机器人工具箱(Robotics Toolbox)学习笔记 82164
  • STM32学习笔记(2)——使用Cube+HAL库实现CAN通讯 25722
  • STM32学习笔记(1)——STM32基础知识 22703
  • STM32环境下AS5048A14位磁旋转编码器SPI通讯调试记录——我学到的东西、遇到的问题、解决的过程 18927
  • DSP学习笔记(1)——F28335基础知识 12864

分类专栏

  • ROS 2篇
  • 无人驾驶 2篇
  • Abaqus 3篇
  • 有限元仿真 4篇
  • MATLAB 10篇
  • 论文写作 1篇
  • 机器人 7篇
  • AIGC 1篇
  • COMSOL
  • 固高 1篇
  • PyTorch 1篇
  • 机器学习 2篇
  • LeetCode刷题笔记 7篇
  • 伺服驱动 1篇
  • 羽毛球发球机 1篇
  • 数据结构 2篇
  • CoDeSys 1篇
  • ABS及车身稳定系统 2篇
  • Qt学习 3篇
  • MBD机械臂 1篇
  • 练字 1篇
  • 舵机控制器 2篇
  • C语言学习 2篇
  • 杂记 1篇
  • 51单片机
  • python语言学习 2篇
  • CPP语言学习 8篇
  • delta3D打印 2篇
  • STM32 4篇
  • 软件小技巧 3篇
  • 录入设备 3篇
  • DSP 2篇
  • F28335 1篇

最新评论

  • Matlab机器人工具箱(Robotics Toolbox)学习笔记

    Mist_Orz: 当机器人的构型和尺寸确定之后就能根据一些方法比如DH模型得到解析解的明确表达式

  • Matlab机器人工具箱(Robotics Toolbox)学习笔记

    Wlszz: 怎么才能得到解析解呢,一个明确的表达式

  • 解决word打字卡顿问题的方法

    Jeanne Valkyrie Leithian: 确实有用

  • 机器人动力学与参数辨识学习笔记(一)

    Mist_Orz: 同感,我做了一段时间,感觉太难了于是没继续做,现在也没有做跟机器人相关的内容了,你加油表情包

  • 搅拌摩擦焊有限元仿真分析学习笔记(一)——comsol、abaqus相关案例学习

    Mist_Orz: 成功过,不带螺纹,但是参数很夸张,把搅拌头转速增加10倍试试表情包

最新文章

  • ROS与无人驾驶学习笔记(一)——ROS基本操作
  • ROS与无人驾驶学习笔记(零)——问题汇总
  • 从matlab的fig图像文件中提取数据
2024年4篇
2023年14篇
2022年13篇
2021年9篇
2020年9篇
2019年8篇
2018年16篇

目录

目录

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家出售玻璃钢雕塑山东商场美陈价格衢州个性化玻璃钢雕塑优势玻璃钢雕塑手绘美甲商场周年庆美陈吊饰鹤壁玻璃钢雕塑安顺玻璃钢雕塑厂哪家好玻璃钢树脂景观雕塑青海动物玻璃钢雕塑公司玻璃钢雕塑制作生产厂家温州学校玻璃钢雕塑公司江西卡通玻璃钢动物鹤雕塑日照玻璃钢座椅雕塑景德玻璃钢人物雕塑安宁加工玻璃钢雕塑哪里有无锡玻璃钢雕塑广安玻璃钢雕塑摆件设计厂家云南仿铜玻璃钢雕塑制作深圳玻璃钢雕塑摆件怎么样玻璃钢假山石头雕塑仿铜玻璃钢雕塑销售电话合肥景观玻璃钢雕塑定制美陈玻璃钢人物雕塑规格仙桃玻璃钢考拉雕塑厂家邯郸动漫玻璃钢雕塑河南玻璃钢泡沫雕塑定做价格东丽玻璃钢花盆气球商场美陈哪家靠谱张掖广场玻璃钢雕塑多少钱山西标牌标识玻璃钢仿铜雕塑厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化