
《嵌入式》STM32开发笔记
文章平均质量分 71
STM32开发笔记
冬天的窗
19级苏州大学光电科学与工程学院在校本科生
光电信息科学与工程专业
对编程、光学理论(包括近眼显示)、算法(包括人工智能、SLAM)、Web开发(包括前端、后端、数据库、WebAR)感兴趣
展开
-
STM入门32(二十七)----FSMC
这里写目录标题一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-08-10 16:10:18 · 1815 阅读 · 0 评论 -
STM32入门(二十六)----SPI—读写串行FLASH
SPI—读写串行FLASHSPI协议SPI物理层的特点SPI的协议层SPI基本通讯过程通讯的起始和停止信号数据有效性CPOL/CPHA及通讯模式STM32的SPI特性及架构STM32的SPI外设STM32的SPI架构通讯引脚时钟控制逻辑数据控制逻辑整体控制逻辑通讯过程SPI初始化结构体SPI—读写串行FLASHSPI协议SPI协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在ADC、LCD等设备与原创 2021-08-07 14:27:36 · 527 阅读 · 0 评论 -
STM32入门(二十五)----高级定时器
高级定时器定时器高级定时器高级定时器GPIO高级定时器功能框图时钟源内部时钟源外部时钟1外部时钟2内部触发输入内部触发连接TIM1为TIM2提供时钟控制器时基单元预分频器计数器(上/下/两边)自动重装载寄存器重复计数器--基本定时器
基本定时器定时器简介二级目录三级目录定时器简介定时器功能 :定时、输出比较、输入捕获、互补输出定时器分类 :基本定时器、通用定时器、高级定时器定时器资源 :F103系列有2个高级定时器TIM1和TIM8、4个通用定时器TIM2/3/4/5、2个基本定时器TIM6和TIM7二级目录三级目录...原创 2021-08-07 14:26:57 · 568 阅读 · 0 评论 -
STM32入门(二十三)----EEPROM
EEPROMI2C协议I2C物理层的特点I2C的协议层I2C基本读写过程通讯的起始和停止信号数据有效性地址及数据方向响应STM32的I2C特性及架构通讯引脚时钟控制逻辑数据控制逻辑整体控制逻辑STM32的I2C通讯过程主发送器主接收器I2C初始化结构体和库函数I2C——读写EEPROMI2C协议I2C物理层的特点I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在原创 2021-08-07 14:26:29 · 3715 阅读 · 0 评论 -
STM32入门(二十二)----常用存储器
常用存储器存储器的种类RAM存储器非易失性存储器存储器的种类易失性存储器: 掉电数据会丢失 读写速度较快 内存非易失性存储器:掉电数据不会丢失 读写速度较慢 机械硬盘RAM存储器RAM是“Random Access Memory”的缩写,被译为随机存储器。所谓“随机存取”,指的是当存储器中的消息被读取或写入时,所需要的时间与这段信息所在的位置无关。这个词的由来是因为早期计算机曾使用磁鼓作为存储器,磁鼓是顺序读写设备,而RAM可随读取其内部任意地址的数据,时间都是相同的,因原创 2021-08-07 14:26:03 · 711 阅读 · 0 评论 -
STM32入门(二十)----DAC
DAC理论实践理论实践原创 2021-08-07 14:24:01 · 1179 阅读 · 0 评论 -
STM32入门(十九)----通用定时器
通用定时器理论三种定时器通用定时器的特点通用定时器的工作过程实践理论STM32F103ZET6有4个通用定时器,2个高级定时器,2个基础定时器三种定时器共同点:都是16位;计数器模式都可以向上,向下,向上/向下;都可以产生DMA请求。区别:高级定时器:TIM1、TIM8 捕获/比较通道4 有互补输出 可以用于带死区控制盒紧急刹车,可用于PWM电机控制通用定时器:TIM2~TIM5 捕获/比较通道4 没有互补输出 通用 定时器计数,PWM输出,输入捕获,输出比较基本定时器:原创 2021-08-07 14:23:33 · 594 阅读 · 0 评论 -
STM32入门(十八)----ADC
ADC原理ADC简介ADC功能框图实践配置路线原理ADC简介参考资料:STM32参考书手册 11ADC :Analog to Digital,模拟数字转换器三个独立的ADC 1 / 2 / 3;分辨率为12位;每个ADC具有18个通道,其中外部通道16个;ADC的输入时钟不得超过14MHz。(STM32 6 RCC的图8)ADC功能框图输入电压:VREF- ≤ VIN ≤ VREF+决定输入电压的引脚:VREF-、 VREF+ 、 VDDA 、 VSSAVSSA 和 VREF-接原创 2021-08-07 14:22:56 · 453 阅读 · 0 评论 -
STM32入门(十七)----DMA
DMA理论DMA简介框图实践理论DMA简介框图实践原创 2021-08-07 14:20:35 · 863 阅读 · 0 评论 -
STM32入门(十六)----串口通信
串口通信通信的基本概念串行和并行通信全双工、半双工和单工同步和异步通信的速率串口通信串口通信协议简介RS232标准USB转串口原生的串口到串口串口功能框图固件库结构体和函数程序中断接收和发送串口控制LED亮灭通信的基本概念串行和并行通信数据传送方式串行与并行通信的特性对比并行:SDIO(4位,SD卡)、FSMC(16,液晶或显存)、W5100串行:USART、I2C、SPI、LSB、MSB、W5500全双工、半双工和单工数据通信方向同步和异步在同步通讯中,数据信号所传输的内容绝原创 2021-07-17 13:37:06 · 771 阅读 · 0 评论 -
STM32入门(十五)----SysTick系统定时器
SysTick系统定时器SysTick简介SysTick框图SysTick定时实验程序SysTick简介SysTick:系统定时器,24位,只能递减,存在于内核,嵌套在NVIC中,所有的Cortex-M内核的单片机都具有这个定时器。《STM32参考手册》里的一句话:关于Cortex-M3核心、 SysTick定时器和NVIC的详细说明,请参考另一篇ST的文档和一篇ARM的文档:《STM32F10xxx Cortex-M3编程手册》和《Cortex™-M3技术参考手册》。SysTick框图co原创 2021-07-16 14:30:27 · 602 阅读 · 0 评论 -
STM32入门(十四)----EXTI
EXTIEXTI简介EXTI功能框图EXTI功能框图讲EXTI简介EXTI:External int原创 2021-07-15 20:30:07 · 949 阅读 · 0 评论 -
STM32入门(十三)----中断概览
中断概览中断类型NVIC简介优先级的定义中断编程中断类型系统中断,体现在内核水平。外部中断,体现在外设水平。STM32中文参考手册9.1中断优先级的数字越小,优先级越高。复位的优先级最高。PS:中断和异常在本文是一个意思。NVIC简介Nested vectored interrupt controller (NVIC)嵌套向量中断控制器,属于内核外设,管理着包括内核和片上所有外设的中断相关的功能。两个重要的库文件:core_cm3.h和misc.hSTM32F10xxx Corte原创 2021-07-15 12:11:49 · 237 阅读 · 0 评论 -
STM32入门(十二)----RCC
RCC: Reset and clock control 复位和时钟控制时钟树在STM32中文参考手册中6.2时钟中的时钟树图HSE时钟HSE:High Speed External Clock signal,即高速的外部时钟。来源:无源晶振(4-16M),通常使用8M。(正点用的也是8M)外部晶体/陶瓷谐振器(HSE晶体)4~16Mz外部振荡器可为系统提供更为精确的主时钟。相关的硬件配置可参考图9,进一步信息可参考数据手册的电气特性部分。在时钟控制寄存器RCC_CR中的HSERDY位用原创 2021-07-15 10:04:01 · 1184 阅读 · 0 评论 -
STM32入门(十)----位带操作(GPIO的输入和输出)
外设位带区与外设位带别名区的地址转换:AliasAddr=0x4200 0000+(A-0x4000 0000)*32+n*4;SRAM位带区与SRAM位带别名区的地址转换:AliasAddr=0x2200 0000+(A-0x2000 0000)*32+n*4;A:表示我们要操作的那个位所在的寄存器的地址;n:位号每一个字节都膨胀为一个字(4个字节)((addr&0xF000 0000)+0x0200 0000+((addr&0x00FF FFFF)<<5)+(bitnum)<<2)原创 2021-07-13 18:38:00 · 793 阅读 · 0 评论 -
STM32入门(九)----GPIO输入(按键检测)
硬件消抖:以KEY1为例当按键没有按下的时候,PA0接地,输入0。当按键按下的时候,右边的电流通过,经过电容之后逐渐稳定,没有受到按键抖动的影响。所以要将将引脚设置为上升沿触发。这个是最简单的按键结构,没有用到硬件消抖,需要软件消抖。就像是在51单片机里面软件消抖一样,需要延时20ms左右再去判断按键状态。下面的代码是适用于这个原理图的(正点的板子)。bsp_led.h#ifndef __BSP_LED_H#define __BSP_LED_H#include "stm32f1原创 2021-07-13 15:49:25 · 836 阅读 · 0 评论 -
STM32入门(八)----GPIO输出(使用固件库点亮LED)
main.c#include "stm32f10x.h"#include "bsp_led.h"int main(void){LED_GPIO_Config();}bsp_led.h#ifndef __BSP_LED_H#define __BSP_LED_H#include "stm32f10x.h"#define LED_0_GPIO_PIN GPIO_Pin_5 #define LED_0_GPIO_PORT GPI原创 2021-07-13 08:59:56 · 817 阅读 · 0 评论 -
STM32入门(七)----新建工程(固件库版本)
在文件夹中新建如下文件夹在Libraaries中添加CMSIS中只需要留下STM32F10x_…中需要留下在User中添加Doc中添加readme.txt然后就是New Project…把NewGroup重命名并且按下面的操作找到所有c文件所对应的头文件所在的文件夹USE_STDPERIPH_DRIVERSTM32F10X_HD注意是用英文的逗号将他们俩分开。要勾上Hex文件用来编译Browse information用来生产调试信息...原创 2021-07-12 16:34:07 · 217 阅读 · 0 评论 -
STM32入门(六)----初识固件库
1-汇编编写的启动文件startup_stm32f10x_hd.s:设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟、调用C库函数_main最终去到C的世界。stm32中文参考首手册中有介绍小/中/大/互联型产品。2- 时钟配置文件system_stm32f10x.c:把外部的时钟HSE=8M,经过PLL倍频成72MHz3-外设相关的stm32f10x.h:实现内核之外的外设的寄存器映射xxx:GPIO、UART、I2C、SPI、FSMCstm32f10x_xx.c:外设的驱动函原创 2021-07-12 15:00:38 · 378 阅读 · 0 评论 -
STM32入门(五)----自己写库(构建库函数雏形)
stm32f103x.h#ifndef __STM32F10X_H#define __STM32F10X_H//用来存放STM32寄存器映射的代码//外设 peripheral#define PERIPH_BASE ((unsigned int)0x40000000)#define APB1PERIPH_BASE PERIPH_BASE#define APB2PERIPH_BASE (PERIPH_BASE+0x10000)#define AHBPERIPH_BAS原创 2021-07-12 13:28:58 · 873 阅读 · 0 评论 -
STM32入门(四)----点亮一个LED(使用寄存器)
GPIO简介GPIO——general purpose input output是通用输入输出端口的简称,简单来说就是软件可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。可以在数据手册的3引脚定义中查找各个GPIO的功能。GPIO框图注意事项1、输入的电压不能超过VDD太多2、不能直接接电机推挽输出比如ODR输出了1,经过反相器,变为0,后面只有PMOS管导通,VDD输出,所以输出1。(推)比如ODR输出了0,经过反相器,原创 2021-07-11 16:19:18 · 371 阅读 · 0 评论 -
STM32入门(三)----点亮一个LED(直接取地址)
启动文件STM32F103ZET6是属于大容量的器件,启动文件应该选择startup_stm32f10x_hd.sstm32启动文件的选择.添加之后编译,会报错:Rebuild target 'Target 1'compiling main.c...main.c(11): warning: #1-D: last line of file ends without a newline //}main.c: 1 warning, 0 errorsassembling startup_stm原创 2021-07-11 12:51:53 · 996 阅读 · 0 评论 -
STM32入门(二)----寄存器
**ICode总线**ICode中的I表示Instruction,即指令,我们写好的程序编译之后都是一条条指令存放在FLASH中,内核要读取这些指令来执行程序就必须通过ICode总线,它几乎每时每刻都需要被使用,它是专门用来取指令的。**Dcode总线**DCode中的D表示Data,即数据,这条总线是用来取数据的。我们在写程序的时候,数据有常量和变量两种,变量就是固定不变的,用C语言中的const关键字修饰,是放到内部的FLASH当中的,变量是可变的,不管是全局变量还是局部变量都放在内部的SRAM。原创 2021-07-10 21:44:35 · 4320 阅读 · 1 评论 -
STM32入门(一)----初识STM32
STM32属于一个微控制器,自带了各种常用通信接口,功能强大SDIO、FSMC、I2S、ADC、DAC、GPIO、串口1、串口:UASRT,用于跟串口接口的设备通信,比如:USB转串口模块、ESP8266WIFI,GPS模块,GSM模块,串口屏、指纹识别模块2、内部集成电路:I2C,用于跟I2C接口的设备通信,比如:EEPROM,电容屏,MPU6050陀螺仪、0.6寸OLED模块3、串行通信接口:SPI,用于跟SPI接口的设备通信,比如:FLASH,W5500、VS1053原创 2021-07-09 17:41:46 · 1530 阅读 · 1 评论