【完结】STM32 学习笔记
本专辑以正点原子STM32F103平台为学习基础,汇总及总结本套教程中重点难点,尽可能提炼精简干货,以备忘为主要目的;另外,尊重原创,欢迎购买学习正点原子硬件;
BraveWangDev
11年开发经验、全栈工程师;2023年更新计划已确定,希望能与大家共同进步;
展开
-
FSMC驱动TFTLCD原理,时序和寄存器介绍
一,FSMC简介FSMC:灵活的静态存储控制器能够与同步或异步存储器和16位PC存储器卡连接STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器STM32 407和103是不支持SD RAM的,429,439支持SD RAM操作二,FSMC驱动LCD原理FSMC驱动外部SRAM(LCD被当做SRAM)SRAM控制包含: 地址线(如A0原创 2016-11-08 11:38:52 · 11107 阅读 · 2 评论 -
TFTLCD原理与驱动与指令介绍
一,TFTLCD简介TFTLCD : 薄膜晶体管液晶显示器在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT) 克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,提高图像质量TFTLCD优点: 亮度好,对比度高,层次感强,颜色鲜艳,是目前最主流的LCD显示器 广泛用于电视,手机,电脑,平板等各种的电子产品二,ALINETEK 2.8寸 TFTLCD模块介绍240*320分辨率1原创 2016-11-07 16:30:57 · 56509 阅读 · 17 评论 -
OLED显示-字库码表原理
一,字库和码表在OLED显示屏上显示字符,和在点阵上显示图像是一样的 都是通过区域内的像素点的量暗来呈现图案 以1608字体码表为例,代码中表现如下:const unsigned char asc2_1608[95][16]={ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}原创 2016-12-09 15:40:53 · 27690 阅读 · 19 评论 -
OLED原理,时序和操作
一,OLED简介OLED,即有机发光二极管,采用非常薄的有机材料图层和玻璃基板制成 当有电流通过时,有机材料会发光,OLED屏幕可视角度大,节省电能优点:分辨率高,自发光,不需背光源,对比度高,厚度薄,视角广,反应速度快,温度范围广,制造及制程简单缺点:价格贵,尺寸难以大型化(价钱随尺寸几何倍数增长)用途:可穿戴智能设备显示,MP3显示灯二,ALINETEK 0.96存OLED模块参数1)双色:1原创 2016-11-03 16:11:59 · 33201 阅读 · 8 评论 -
电容触摸按键原理
前置技能 输入按键-GPIO输入 通用定时器原理RC充放电电路原理如图: 电阻R和电容C串联 当开关断开时,电阻R,电容0两端电压都是0,无电流 当开关闭合时(瞬间),电阻R两端V1(上端)和0(下端)有电压差,产生电流 此时电子通过电阻R积累在电容正极(上端),直到电容C电压为V1,充电完成 此时R两端电压均为V1,无压差,不再有电流经过电容C原创 2016-10-26 18:38:42 · 10904 阅读 · 0 评论 -
通用定时器-输入捕获实验
知识回顾 前置技能 : 通用定时器原理 我们将通用定时器分为四个部分: 1,选择时钟 2,时基电路 3,输入捕获 4,输出比较本节定时器PWM输出主要涉及到定时器框图左下方部分,即输入捕获部分输入捕获工作过程(以通道1为例)一个通道的框图:作用:捕获TIMx_CH1通道信号的跳变,并触发捕获中断我们将此过程拆分为4个部分1,设置输入捕获滤波器fDT原创 2016-10-24 20:49:39 · 7658 阅读 · 3 评论 -
通用定时器PWM输出实验
知识回顾本节知识需要了解通用定时器原理的前提下进行学习 我们将通用定时器分为四个部分: 1,选择时钟 2,时基电路 3,输入捕获 4,输出比较本节定时器PWM输出主要涉及到定时器框图右下方部分,即输出比较部分和上一讲相同,时基时钟来源于内部默认时钟对此有疑问请参考 : 定时器中断实验 中 定时器时钟选择部分 和 定时器时钟来源部分什么是PWM脉冲宽度原创 2016-10-21 11:45:05 · 17564 阅读 · 1 评论 -
定时器中断实验
知识回顾通用定时器原理通用定时器分为四个部分: 1,选择时钟 2,时基电路 3,输入捕获 4,输出比较本节定时器中断主要涉及到定时器框图上边两个部分,即选择时钟和时基电路 定时器时钟选择选择默认的内部时钟,配置时基电路(配置预分频系数,重装载值) 计数器时钟来源 1,内部时钟(CK_INT),默认 2,外部时钟模式1:外部输入脚(TIx) 3,外部时钟模式2:外部触发输入(ETR)原创 2016-10-18 17:08:20 · 8866 阅读 · 3 评论 -
通用定时器原理
一,STM32三种定时器区别 2个高级定时器 4个通用定时器 2个基本定时器二,定时器的计数模式向上计数模式: 计数器从0开始计数,当计数到自动装载值(TIMx_ARR)时产生向上溢出事件向下计数模式: 计数器从自动装载值(TIMx_ARR)开始向下计数,当计数到0时产生向下溢出事件中央对齐模式(向上/向下计数): 计数器从0开始计数,到自动装载值(TIMx_ARR原创 2016-09-26 14:59:50 · 7020 阅读 · 0 评论 -
窗口看门狗
一,窗口看门狗介绍独立看门狗的喂狗范围 0-X(X由预分频器和重装载值决定,最大值为0xFFF)独立看门狗相关介绍:传送门:独立看门狗相比于独立看门狗,窗口看门狗限定了喂狗时间段(由喂狗上限和喂狗下限值限定的喂狗范围) 所以形象的称作窗口看门狗二,为什么需要窗口看门狗独立看门狗:在0-重载值之间任意时间都可以喂狗 如果程序跑飞后又跑回正常 或者跑乱的程序正好执行了刷新看门狗原创 2016-09-16 15:05:19 · 5845 阅读 · 2 评论 -
独立看门狗
一,看门狗简介由于单片机会受到来自外界电磁场的干扰,造成程序跑飞使系统陷入死循环,造成不可预知的后果 于是有了用于检测单片机程序运行状态的模块或芯片,叫做”看门狗”(watchdog)看门狗作用:检测系统,当系统跑飞时复位系统,重新执行程序二,STM32看门狗STM32有两个看门狗:独立看门狗和窗口看门狗独立看门狗: 驱动:由LSI驱动,即使主时钟发生故障它仍有效 适用场景: 作为主程原创 2016-09-14 16:45:00 · 4854 阅读 · 7 评论 -
外部中断EXTI
前置技能: 按键输入-GPIO输入一,STM32中断介绍相比简单的51单片机,STM32的每个IO口都可以作为外部中断输入STM32中断控制器支持19个外部中断/事件请求: 线0-15:外部IO口输入中断 线16:连接到PVD输出 线17:连接到RTC闹钟事件 线18:连接到USB唤醒事件每个外部中断线可配置独立的触发方式,触发/屏蔽.专用状态位三种中断触发方式:原创 2016-09-12 16:50:15 · 9288 阅读 · 4 评论 -
串口通信实验
前置技能 串行通信基本原理 USART串口通信配置一,串口操作相关库函数:获取状态标志位函数-操作USART_SR寄存器// 获取状态标志位FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);// 清除状态标志位void USART_ClearFlag(USART_TypeDef* USA原创 2016-09-12 11:50:42 · 4252 阅读 · 0 评论 -
USART串口通信配置
一,串口相关寄存器USART_SR 状态寄存器USART_DR 数据寄存器USART_BRR 波特率寄存器USART_CR1 控制寄存器USART_SR-状态寄存器: 状态寄存器USART_SR,描述串口寄存器的一些状态: 如位5:读数据寄存器非空 通过读取这个位的值,判断是否收到了完整的数据 串口已经接收到了数据,并且已经USART相关寄存器USART测试原创 2016-09-09 17:06:49 · 22697 阅读 · 10 评论 -
串行通信基本原理
一,串行通信和并行通信 并行通信:数据各个位同时进行传输优点:速度快缺点:占用IO资源多串行通信:数据按位顺序进行传输优点:占用IO资源少缺点:速度较慢二,三种串行传输方式1,单工通信 只支持从发送方到接收方的单行传输,不支持反向传输 2,半双工通信 允许数据双向传输,单同一时刻只允许数据在一个方向传输 相当于即可用于接收也可用于发送原创 2016-09-08 10:02:55 · 6510 阅读 · 2 评论 -
NVIC中断优先级管理
一,STM32中断介绍CM3内核支持256个中断,16个内核中断和240个外部中断,具有256级可编程中断设置STM32只使用了CM3内核的一部分,84个中断:16个内核中断+68个可屏蔽中断(外部中断),具有16级可编程的中断优先级STM32F103系列只有60个可屏蔽中断(F107系列有68个)二,中断管理STM32有如此多的中断,那么是如何进行管理的中断优先级分组: SCB->AIRCR [1原创 2016-09-07 10:29:00 · 6337 阅读 · 2 评论 -
按键输入-GPIO输入
按键输入的硬件连接 读取IO输入的相关函数 捕捉按键状态的步骤 按键扫描实现思路 按键扫描程序代码原创 2016-09-06 13:17:56 · 10638 阅读 · 3 评论 -
蜂鸣器实验
一,蜂鸣器介绍 蜂鸣器分有源蜂鸣器和无源蜂鸣器,这里的源指的是震荡源 一般我们使用有源蜂鸣器,如图: 有两个引脚,较长的一端为正极,较短的一段为负极二,蜂鸣器硬件连接: 蜂鸣器负极连接在STM32的PB8引脚: 错误的连接方法: IO口接蜂鸣器接地 错误的臆想: IO口输出高电平,蜂鸣器正负极产生电压差,蜂鸣器发出声响错误分析: STM原创 2016-09-05 15:47:26 · 4670 阅读 · 0 评论 -
LED跑马灯-位操作
什么是位操作位操作原理位与别名映射原创 2016-09-05 11:46:23 · 2682 阅读 · 0 评论 -
LED跑马灯-寄存器
LED跑马灯-寄存器实现流程: 使能GPIO时钟 配置寄存器:RCC_APB2ENR 初始化IO口工作模式 配置寄存器:GPIOx_CRH/CRL 操作IO口输出高低电平 配置寄存器GPIO_ODR或GPIO_BRRLED跑马灯-寄存器源码原创 2016-09-02 11:05:26 · 2852 阅读 · 1 评论 -
LED跑马灯-库函数
LED跑马灯-库函数实现流程: 1,使能GPIO时钟 使用IO口前先要使能相应的GPIO时钟 2,初始化IO口 GPIO_Init() 配置IO口的引脚,最大速度,输入/输出模式(使用推挽输出) 3,操作IO口输出高低电平 控制响应IO口输出高电平或低电平STM32文档手册分析LED跑马灯-库函数源码原创 2016-09-01 16:13:32 · 2632 阅读 · 0 评论 -
端口复用和重映射
端口复用的意义使IO口得到最大限度的复用端口复用的配置GPIO_Init()1使能GPIO2外设时钟使能3初始化IO工作模式STM32端口复用文档分析端口重映射的意义方便PCB设计布线,减少信号的交叉干扰端口重映射的配置(部分,全部)AFIO时钟使能STM32端口重映射文档源码分析原创 2016-08-31 17:34:33 · 12354 阅读 · 0 评论 -
SysTick定时器和delay延迟函数
Systick定时器和中断Systick相关寄存器 CTRL: Systick控制和状态寄存器 LOAD: Systick重装载寄存器 VAL: Systick当前值寄存器 CALIB: Systick校准值寄存器 寄存器文档和相关库函数分析Systick定时器工作方式Systick初始化及源码分析SysTick实现延时函数原创 2016-08-30 16:10:25 · 17787 阅读 · 3 评论 -
系统初始化函数SystemInit讲解
要求前置技能: 需了解系统时钟源相关知识:STM32时钟系统 本文以HSE外接8MHz晶振,PLL倍频9倍得到72MHz的系统时钟为讲解背景一,系统初始化函数SystemInit: 文件路径:USER->system_stm32f10x.c->头文件system_stm32f10x.h中SystemInit(void) 在system_stm32f10x.c文件中找到SystemInit(voi原创 2016-08-24 19:56:53 · 13483 阅读 · 0 评论 -
STM32时钟系统
一,时钟系统框图 下面我们根据这张图说说有关STM32时钟系统的那些事二,STM32的5个时钟源:HSI HSE LSI LSE PLL 1. HSI:高速内部时钟 由内部RC振荡器产生,频率不稳定,约8M 可直接作为系统时钟的选择(如图:系统时钟源有4个来源选择,后边讲解) 可2分频后经过选择器做PLL时钟源 2. HSE:高速外部时钟 由外部时钟源产生,可接4M-16MHz晶原创 2016-08-23 14:46:58 · 8066 阅读 · 0 评论 -
寄存器名称和地址的映射分析
首先要清楚的一点,所有操作,最终目的都是操作寄存器一,对比51单片机和STM32对寄存器的操作1)51单片机: sfr P0=0x80; //关键字sfr 声明地址和名称的映射 P0=0x00; //将0x00赋值给P0口的8位(51单片机一组IO为8位)2)STM32: GPIOA->ODR=0x00000000 //为GPIOA的OD原创 2016-08-23 09:44:19 · 7022 阅读 · 0 评论 -
新建工程模板-库函数
一,为什么要使用库函数 51单片机开发一般采用直接操作寄存器方式:如P0=0x01;(51单片机8位) STM32开发也可以采用直接操作寄存器的方式:如GPIO->BRR=0x0001(STM32单片机16位) 由于STM32芯片包含数百个寄存器,直接操作寄存器需要全部记下来,难度较大 所以官方推出了一套封装了底层寄存器操作的固件库,提供一套API给开发者使用 库函数的优势: 开发者不原创 2016-08-21 12:40:41 · 1873 阅读 · 1 评论 -
GPIO的工作原理
一,STM32F103ZET6介绍 1. STM32实物图: 2. STM32引脚分布图: STM32F103ZET6:共144个引脚,7组IO口,每组16个IO口 7*16=112个IO口(这7组IO口分别为GPIOA,GPIOB…GPIOG) 例如:PGIOA包含PA0,PA1,PA2…PA15,每组16个IO口二,IO口的基本结构和工作方式 1. STM32F1系列IO口的基本结原创 2016-08-21 00:36:56 · 13875 阅读 · 0 评论 -
STM32开发环境搭建
STM32开发环境搭建MDK安装(MDK5.14)MDK破解MDK插件CH340驱动安装ST-LINK安装原创 2016-08-18 23:58:05 · 2589 阅读 · 0 评论