[STM32-f103c8t6]学单片机,你要先知道这些||江协科技视频学习笔记

目录

一 入门套件

二、入门需要知道的概念

ARM

MCU(Microcontroller Unit)微控制器单元

RAM(random-access memory)随机存取存储器

ROM(Read Only Memory)只读存储器

SOC(System on Chip)系统级芯片

寄存器

BL指令

RCC(Reset and Clock Control)复位和时钟控制模块

GPIO(General Purpose Input/Output)通用输入/输出引脚的缩写

EXTI(External Interrupt)STM32微控制器中的一种外部中断

main函数之前

三 、STM32f130C8T6芯片介绍

1.属性介绍

2.STM片上资源/外设Peripheral

3.芯片名称表达的信息

4.器件一览

5.系统结构

基本介绍

三条总线

6.引脚定义

侵入检测:

7.调试方式

SWD

JTAG

8.启动配置

一 入门套件

最小系统板

oled显示屏4引脚

电位器

二引脚小按键

ST——Link'

u转串口

有缘蜂鸣器

光敏电阻模块

热敏电阻模块

对射式红外模块

反射式红外模块

W25Q64Flash存储模块

MPU6050陀螺仪加速度计

旋转编码器

直流电机和PB6612点击驱动模块

SG90舵机

二、入门需要知道的概念

STM32是一款由STMicroelectronics(意法半导体)推出的基于ARM Cortex-M内核的微控制器。它具有 低功耗、高性能、高集成度和易于开发等特点,广泛应用于各种嵌入式系统和物联网应用。
STM32的核心特点如下:
  1. 低功耗:STM32采用了基于Cortex-M内核的低功耗设计,可以在低至0.5毫安的待机电流下运行,适用于各种便携式和电池供电的应用场景。
  2. 高性能:STM32具有高达72MHz的主频,可以满足大多数嵌入式应用的性能需求。此外,它还支持硬件定时器、中断向量表等高级功能,提高了系统的实时性和可靠性。
  3. 高集成度:STM32集成了丰富的外设资源,如GPIO、UART、I2C、SPI、ADC、DAC、PWM等,方便用户快速实现各种功能。同时,STM32还提供了丰富的库函数和开发工具,降低了开发难度。
  4. 易于开发:STM32支持多种编程语言,如C/C++、汇编、Python等,用户可以根据自己的需求选择合适的开发方式。此外,STM32还有丰富的示例代码和文档,帮助初学者快速上手。
对于初学者来说,学习STM32可以从以下几个方面入手:
基本概念:了解微控制器的基本概念,如时钟频率、指令集、中断、外设等。
开发环境搭建:安装Keil MDK(STM32官方开发环境)或IAR Embedded Workbench(第三方开发环境),熟悉软件界面和基本操作。
外设配置与使用:学习如何配置STM32的外设资源,如GPIO、USART、I2C等,并编写相应的驱动程序。
编程实践:通过实际项目练习,掌握STM32的基本编程技巧,如中断处理、定时器编程等。
进阶知识:学习更高级的功能,如DMA(直接内存访问)、RTOS(实时操作系统)等,提高系统性能和可扩展性。
总之,STM32是一款非常适合初学者学习的微控制器平台。通过掌握STM32的基本知识和编程技巧,你可以逐步提高自己的嵌入式开发能力,为更复杂的项目打下坚实的基础。
——以上部分来自讯飞星火大语言模型
STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器
STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等
STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器

高性能系列

F2

F4

F7

H7

主流系列

F0

F1

F3

超低功耗

系列

L0

L1

L4

L5

无线系列

WL

WB

ARM

•ARM既指ARM公司,也指ARM处理器内核

•ARM公司是全球领先的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构

•ARM公司设计ARM内核,半导体厂商完善内核周边电路并生产芯片

为了适应市场需求,ARM推出了Cortex系列的内核,以及三款适用于不同场景的子型号,它们分别是Cortex-A系列、Cortex-R系列、Cortex-M系列,后两者适用于嵌入式领域,A型适用于高端应用型领域,类似于手机芯片研发。

MCU(Microcontroller Unit)微控制器单元

它把中央处理器(CPU)-(Central Processing Unit)的频率与规格做适当缩减,并将内存、计数器、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的芯片。

UART(Universal Asynchronous Receiver/Transmitter):是通用异步收发传输器的缩写,是一种串行通信协议,用于计算机和其他设备之间的数据传输。它是一种异步串行通信协议,可以配合许多不同类型的涉及发送和接收串行数据的串行协议工作

串行通信协议:是一种通信方式,数据是一位一位按顺序传送的通信方式,相对于并行通信,其突出优点是只需要一对传输线,缺点是传输速度较低。串行通信的传输方向通常有三种,单工、半双工和全双工 。

PLC:是可编程逻辑控制器(Programmable Logic Controller)的缩写,是一种具有微处理器的数字电子设备,用于自动化控制的数字逻辑控制器,可以将控制指令随时加载存储器内存储与运行 。

RAM(random-access memory)随机存取存储器

是一种用于存储计算机当前使用的数据和代码的计算机存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质 。RAM的存储原理是通过电子元件的变化来存储数据的。RAM是一种易失性存储器即当电源关闭时,存储器中的数据会丢失。RAM通常由六个晶体管组成,每个晶体管都有一个存储位。当CPU需要读取数据时,它会发送一个信号到RAM中的相应地址,然后RAM会将该地址对应的位设置为1。如果CPU需要写入数据,则它会发送一个信号到RAM中的相应地址,并将该地址对应的位设置为0 。

ROM(Read Only Memory)只读存储器

通常用于存储计算机固件或其他不需要修改的数据。ROM的特点之一是它不能被修改,这意味着它只能读取数据,而不能写入数据。另一个特点是它是非易失性的,这意味着即使电源关闭,它仍然可以保持数据 。我们灌入MCU的程序一般被保存在这里。Flash同理是一种非易失性存储器,通常用于存储操作系统、应用程序和数据。片载硬盘是一种固态硬盘,它使用闪存芯片作为存储介质。

SOC(System on Chip)系统级芯片

也称为片上系统。它是将CPU、GPU、内存、基带和GPS模块整合在一起的解决方案,是将系统运行所需的芯片整合在一块芯片上 。SOC的举例说明有很多,比如智能手机、平板电脑、路由器、电视等电子设备都是使用SOC芯片。其中,智能手机中的SOC芯片通常包括CPU、GPU、内存、基带和GPS模块等 。

寄存器

寄存器是计算机中的一种存储器件,用于暂时存放数据和指令。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器 。寄存器在内存中有固定的地址指定的空间。

BL指令

BL指令是ARM汇编语言中的一条指令,全称是Branch with Linking,即带链接分支指令。BL指令的作用是将当前程序的运行地址保存到链接寄存器LR中然后将子程序的地址写入PC寄存器,从而实现子程序的调用。在子程序执行完毕后,通过将PC寄存器的值写回LR寄存器,实现返回到原来的程序继续执行 。

所以在以后编写程序是,要减少跳转的使用方式,可以多使用内联,甚至使用,可以大大提高效率。内联(Inline)是一种优化技术,通常用于C++等编程语言中。它是指在编译时将函数调用替换为函数体本身,从而减少函数调用的开销(典型空间换时间),提高程序执行效率。

内联函数通常是简单的、短小的函数,因为它们被编译器认为足够小而不会引入额外的开销。此外,内联函数还必须是无副作用的,因为编译器无法确定在函数调用之后程序的状态会发生什么变化。因此,如果一个函数有副作用或者非常复杂,就无法使用内联优化来提高程序性能。

RCC(Reset and Clock Control)复位和时钟控制模块

它是在STM32系列微控制器中的一个重要模块。RCC模块负责控制和配置系统的时钟源和时钟分频器,以及系统的复位功能。
RCC模块提供了以下功能:
  1. 系统时钟源选择:可以选择内部时钟源(HSI、HSI48、LSE等)或外部时钟源(HSE、LSE等)作为系统的主时钟。
  2. 时钟分频器配置:可以配置时钟分频器来控制各个外设的时钟频率,以满足不同外设的时钟要求。
  3. 外设时钟使能:可以使能或禁用各个外设的时钟,以控制外设的工作状态。
  4. 复位控制:可以对系统的各个模块进行软件复位或硬件复位。
RCC模块的寄存器包括RCC_CR、RCC_CFGR、RCC_APB1RSTR、RCC_APB2RSTR等,通过对这些寄存器的配置和操作,可以实现对系统时钟和复位的控制。
在使用RCC模块时,通常需要先初始化时钟源和时钟分频器,然后根据需要使能相应的外设时钟。例如,可以使用RCC_PLLConfig函数配置PLL时钟源和分频系数,然后使用RCC_PLLCmd函数使能PLL时钟,最后使用RCC_AHBPeriphClockCmd函数使能需要的外设时钟。
总之,RCC模块在STM32微控制器中起着重要的作用,它提供了对系统时钟和复位的控制,以满足不同外设的时钟要求和系统的功能需求。

GPIO(General Purpose Input/Output)通用输入/输出引脚的缩写

它是一种通用的数字信号引脚,可以用于输入和输出不同的电平信号。在微控制器中,GPIO引脚通常用于与外部设备进行数字信号的交互,如连接按钮、LED灯、传感器等。
GPIO引脚具有以下特点:
  1. 可编程性:GPIO引脚可以通过编程来配置为输入或输出模式,并且可以通过编程来控制引脚的电平状态。
  2. 多功能性:GPIO引脚通常具有多种功能,可以通过配置寄存器来选择不同的功能,如输入、输出、模拟输入、复用功能等。
  3. 状态监测:GPIO引脚可以用于检测外部信号的状态变化,如检测按钮的按下或释放。
  4. 电平转换:GPIO引脚可以用于将微控制器的数字信号转换为外部设备所需的电平,如将微控制器输出的3.3V电平转换为5V电平。
在使用GPIO引脚时,通常需要进行以下步骤:
  1. 选择引脚:根据需要选择合适的GPIO引脚,并了解其对应的引脚号和端口号。
  2. 配置模式:通过配置寄存器来选择引脚的工作模式,如输入模式、输出模式、复用功能等。
  3. 配置电平:如果引脚为输出模式,可以通过配置寄存器设置引脚的电平状态,如高电平或低电平。
  4. 读取输入:如果引脚为输入模式,可以通过读取寄存器来获取引脚的电平状态。
总之,GPIO引脚是微控制器中常用的通用输入/输出引脚,通过编程配置和控制,可以实现与外部设备的数字信号交互。

EXTI(External Interrupt)STM32微控制器中的一种外部中断

用于检测外部信号的变化并触发中断处理程序。外部信号可以是来自GPIO引脚的电平变化、定时器的定时事件、DMA传输完成等。
EXTI模块具有以下特点:
  1. 多路中断:STM32微控制器通常具有多个EXTI通道,可以同时检测多个外部信号的变化。
  2. 灵活配置:可以通过编程配置EXTI通道的触发方式、优先级、中断使能等。
  3. 高效响应:当外部信号发生变化时,EXTI模块可以快速响应并触发中断处理程序,从而实现实时响应外部事件的功能。
在使用EXTI模块时,通常需要进行以下步骤:
  1. 配置GPIO引脚:如果外部信号来自GPIO引脚,需要先配置GPIO引脚的工作模式和电平触发方式。
  2. 配置EXTI通道:通过EXTI寄存器配置EXTI通道的触发方式、优先级、中断使能等。
  3. 编写中断处理程序:当外部信号发生变化时,EXTI模块会自动触发中断处理程序,需要编写相应的中断处理程序来处理外部事件。
  4. 使能中断:在使用EXTI模块时,需要将对应的中断使能,以便EXTI模块可以正常响应外部事件。
总之,EXTI模块是STM32微控制器中常用的外部中断模块,通过配置和编程,可以实现对外部事件的实时响应和处理。

main函数之前

在Keil中,单片机在执行main函数之前,会进行一系列的初始化工作,包括但不限于:初始化时钟、初始化堆栈指针、执行用户定义的底层初始化代码等。此外,单片机还会调用__main函数,这是因为在C代码中定义了main函数,函数标签main()具有特殊含义。main()函数的存在强制链接器链接到__main和__rt_entry中的初始化代码。其中,__main函数执行代码和数据复制、解压缩以及ZI数据的零初始化 。

三 、STM32f130C8T6芯片介绍

1.属性介绍

•系列:主流系列STM32F1

•内核:ARM Cortex-M3

•主频:72MHz

•RAM:20K(SRAM)——运行内存,实际的存储介质是SRAM

•ROM:64K(Flash)——程序存储器,实际的存储介质是Flash闪存

•供电:2.0~3.6V(标准3.3V)

•封装:LQFP48

2.STM片上资源/外设Peripheral

英文缩写
名称
基础作用
英文缩写
名称
基础作用
NVIC

嵌套向量中断控制器
管理中断设备
CAN
CAN通信
汽车领域
SysTick
系统滴答定时器
给操作系统提供定时服务
USB
USB通信
模拟鼠标,模拟U盘
RCC
复位和时钟控制
使用各模块的时钟
RTC
实时时钟
计时功能
GPIO
通用IO口
点灯,读取按键
CRC
CRC校验
控制芯片进入睡眠状态
AFIO
复用IO口
复用端口的重定义
PWR
电源控制
断电时仍能保存数据
EXTI
外部中断
完成定时中断的任务,完成测频率,生成PWM波形,配置成专用的编码器接口
BKP
备份寄存器
复位电磁干扰,程序设计不合理,
TIM
定时器
IWDG
独立看门狗
IIO口输出模拟电压,是ADC的逆过程
ADC
模数转换器
直接读取Io口的模拟电压值,无需外部链接AD芯片
WWDG
窗口看门狗
DMA
直接内存访问
DAC
数模转换器
USART
同步/异步串口通信
SDIO
SD卡接口
I2C
I方C通信
FSMC
可变静态存储控制器
扩建内存,配置总线协议
SPI
SPI通信
USB OTG
USB主机接口

STM32系列微控制器提供了丰富的外设资源,包括GPIO、USART、I2C、SPI、ADC、DAC、PWM等。这些外设的作用分别是:
  • GPIO:通用输入输出端口,可用于控制外部设备,如LED灯、电机等。
  • USART:通用异步收发器,可用于实现串行通信,如UART、I2C等。
  • I2C:内部集成电路总线,可用于连接低速外设,如传感器、EEPROM等。
  • SPI:串行外设接口,可用于连接高速外设,如FLASH、SD卡等。
  • ADC:模数转换器,可用于将模拟信号转换为数字信号。
  • DAC:数字模拟转换器,可用于将数字信号转换为模拟信号。
  • PWM:脉宽调制器,可用于控制电机、LED灯等设备的亮度和速度。
以上是STM32系列微控制器常见的外设,它们可以根据需要进行配置和使用,两个深绿色的在内核里面,其余的都在外面。 我们学习STM32就是学习这些外设的使用方式

3.芯片名称表达的信息

所以,STM32103C8T6的含义就是:

通用类型,增强型,48脚,64k字节闪存存储器,LQFP封装,负四十度到八十五度工业级温度范围

4.器件一览

我们在操作外设时,要判断其是否存在,否则会无法使用

5.系统结构

基本介绍

三条总线

由上图可知,三条总线包括:指令总线Icode,系统总线,数据总线DCode

I-Code 总线(指令总线

I-Code的作用是取指令&执行指令,只和指令有关,I-Code 总线是一条基于 AHB-Lite 总线协议的 32 位总线,负责在 0x0000_0000 – 0x1FFF_FFFF 之间的取指操作。取指以字(32位)的长度执行,即使是对于 16 位指令也如此。因此 CPU 内核可以一次取出两条 16 位 Thumb 指令。

D-Code 总线(数据总线

D-Code 的作用是对数据读写访问,只和数据有关,D-Code 总线也是一条基于 AHB-Lite 总线协议的 32 位总线,负责在 0x0000_0000 – 0x1FFF_FFFF(与I-Code相同)之间的数据访问操作。尽管 CM3 支持非对齐访问,但你绝不会在该总线上看到任何非对齐的地址,这是因为处理器的总线接口会把非对齐的数据传送都转换成对齐的数据传送。因此,连接到 D-Code总线上的任何设备都只需支持 AHB-Lite 的对齐访问,不需要支持非对齐访问。

系统总线

系统总线也是一条基于 AHB-Lite 总线协议的 32 位总线,负责在 0x2000_0000 – 0xDFFF_FFFF 和0xE010_0000 – 0xFFFF_FFFF 之间的所有数据传送,取指和数据访问都算上。和 D-Code 总线一样,所有的数据传送都是对齐的

6.引脚定义

注:
  • 红色为电源相关引脚,蓝色是最小系统相关引脚,绿色是io口、功能口引脚
  • S代表电源,I表示输入,O表示输出,IO表示输入输出
  • FT表示能容忍5V电压,没有FT的表示1能容忍3.3V电压

侵入检测:

侵入检测是一种安全技术,用于监测系统中是否存在未经授权的访问或入侵行为。它可以通过监视系统的输入和输出,以及检测系统中的任何异常行为来发现入侵行为。单片机中的侵入检测可以通过监视输入和输出端口来实现,以检测任何未经授权的访问或入侵行为。例如外壳被非法破坏,连接触点的引脚电平发生变化,此时就可以主动清空数据来保证安全性。
  • NRST是系统复位引脚,N表示其是低电平复位
  • VSS是负极,结GND,VDD是正极,接3.3V
  • PA0兼具有WKUP的功能,可以唤醒处于待机状态的STM32
  • 34,37-40都为调试端口

7.调试方式

STM32C8T6 调试方式有很多种,以下是一些常见的调试方式:
  1. 串口调试:使用串口调试助手来验证串口是否可以正常使用。需要准备 USB 转 TTL 模块(下载器)和串口调试助手。在 Keil5 中点击 options for target,在 Target 标签下有个 Use MicroLIB ---勾选,使用微库,包含如下头文件。改写 int fputc (int ch, FILE *f) 函数,需要输出调试信息即可按照标准 C 库的 printf 输出。
  2. JTAG 调试:使用 J-Link 或 ST-Link 等支持 SWD 模式的调试器进行下载程序与仿真。
  3. IAP 调试:使用 IAR Embedded Workbench 进行编译和下载程序。
  4. ST-Link/V2 调试:使用 ST-Link/V2 进行下载程序与仿真。

SWD

SWD调试是一种常见的调试方式,它需要使用专门的烧录器,如 ST-Link 或 J-Link 等。以下是 SWD 调试的基本步骤:
  1. 连接烧录器和单片机,确保连接正确。
  2. 打开烧录软件,选择正确的单片机型号和烧录器型号。
  3. 点击“下载”按钮,等待下载完成。
  4. 点击“调试”按钮,进入调试模式。

JTAG

JTAG调试是一种常见的嵌入式系统调试方法,主要用于测试和调试芯片、电路板等嵌入式系统的硬件部分。JTAG 调试通过 JTAG 接口连接目标板和开发环境,使用 JTAG 调试器读取和写入目标板上的寄存器和内存,以及控制目标板的输入输出信号。
以下是 JTAG 调试的基本步骤:
  1. 连接烧录器和单片机,确保连接正确。
  2. 打开烧录软件,选择正确的单片机型号和烧录器型号。
  3. 点击“下载”按钮,等待下载完成。
  4. 点击“调试”按钮,进入调试模式。

8.启动配置

在STM32F10xxx中,可以通过BOOT【1:0】引脚选择三种不同的启动模式。
启动模式选择引脚
启动模式
说明
BOOT1
BOOT0
x
0
主闪存存储器
主闪存存存储器被选为启动区域
0
1
系统存储器
系统存储器被选为启动区域
1
1
内置SRAM
内置SRAM被选为启动区域
系统复位后,SYCLK的第4个上升沿,BOOT的引脚值将会被锁存。用户可以通过设置BOOT1和BOOT0的引脚状态,来选择复位后的启动模式。( 意思就是BOOT引脚功能只在刚通电时有效,当第四个时钟过后便是APB2的功能
跳线帽配置高低电平,左侧低电平,右侧高电平
稳压芯片和电容电感

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒雒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值