STM32
开发环境
- 安装MDK软件
- 在桌面创建一个用于专门保存是stm32 的文件夹
- 安装芯片包
- 打开软件新建工程(Project)保存到文件夹
- 将启动文件添加到文件夹
点亮LED灯
-
配置使能APB2的GPIOC时钟
*(unsigned int *)0x4002 1010 |= 0x01 << 4 //起始地址+偏移地址 0x4002 1000 + 0x10
-
配置GPIOC13端口输出模式
*(unsigned int *)0x4001 1004 |= 0x01 << 20 //起始地址+偏移地址 0x4001 1000 + 0x04
-
配置GPIOC13为输出低电平
*(unsigned int *)0x4001 100C &=~ (0x01 << 13) //起始地址+偏移地址 0x4001 1000 + 0Ch
中断
中断类型
- 系统异常,体现在内核水平
- 外部中断,体现在外设水平
NVIC简介
NVIC:嵌套向量中断控制器,属于内核外设,管理着包括内核和片上所有外设的中断相关的功能
两个重要的库文件:core_cm3.h和misc.h
NVIC寄存器简介
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y5LaC3QT-1635508650237)(C:\Users\86150\Desktop\截图\nvic.png)]
中断优先级的定义
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OISFWsk8-1635508650241)(C:\Users\86150\Desktop\截图\nvic1.png)]
中断编程的顺序
- 使能中断请求
- 配置中断优先级分组
- 配置NVIC寄存器,初始化NVIC_InitTypeDef
- 编写中断服务函数
EXTI简介
外部中断/事件控制器
输入线
-
有20根输入线(EXTI0、EXTI1~EXTI19)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p9gfkjRZ-1635508650244)(C:\Users\86150\Desktop\截图\EXTI.png)]
-
通过外部中断寄存器(AFIO_EXTICR1、AFIO_EXTICR2、AFIO_EXTICR3、AFIO_EXTICR4)来选择
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FtinmL6g-1635508650247)(C:\Users\86150\Desktop\截图\EXTI1.png)]
-
EXTI初始化结构体
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z2BvO6Fb-1635508650249)(C:\Users\86150\Desktop\截图\exti3.png)]
编程流程
-
初始化用来产生中断的 GPIO
-
初始化 EXTI
-
配置 NVIC
-
编写中断服务函数
-
主函数调用
SysTick——系统定时器
SysTick 简介
SysTick—系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是 一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系 统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生 一次中断,以此循环往复。
SysTick 寄存器介绍
SysTick—系统定时器有4个寄存器,简要介绍如下。在使用SysTick产生定时的时候, 只需要配置前三个寄存器,最后一个校准寄存器不需要使用。
寄存器名称 寄存器描述
-
CTRL SysTick 控制及状态寄存器
位段 名称 类型 复位值 描述 16 COUNTFLAG R/W 0 如果在上次读取本寄存器后, SysTick 已经计 到 了 0,则该位为 1。 2 CLKSOURCE R/W 0 时钟源选择位,0=AHB/8,1=处理器时钟 AHB 1 TICKINT R/W 0 1=SysTick 倒数计数到 0 时产生 SysTick 异常请 求,0=数到 0 时无动作。也可以通过读取 COUNTFLAG 标志位来确定计数器是否递减 到 0 0 ENABLE R/W 0 SysTick 定时器的使能位 -
LOAD SysTick 重装载数值寄存器
位段 名称 类型 复位值 描述 23:0 RELOAD R/W 0 当倒数计数至零时,将被重装载的值 -
VAL SysTick 当前数值寄存器
位段 名称 类型 复位值 描述 23:0 CURRENT R/W 0 读取时返回当前倒计数的值,写它则使之清 零,同时还会清除在SysTick控制及状态寄 存器中的 COUNTFLAG 标志 -
CALIB SysTick 校准数值寄存器
通信的基本概念
数据的传送方式
- 并行通讯
- 串行通讯(USART、IIC、SPI)
串行与并行通信的特性对比
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CgbwlvnS-1635508650250)(C:\Users\86150\Desktop\截图\通信.jpg)]
数据通信方向
- 全双工
- 半双工
- 单工
数据同步方式
- 同步通讯
- 异步通讯
通信的速率
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VN57g78S-1635508650252)(C:\Users\86150\Desktop\截图\通信2.jpg)]
码元:传输的信息是码元(例如3.3V、0V),所以大多数情况下一个码元往往对应一个二进制位。
USART
串口通信协议简介
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Whw1mdt-1635508650253)(C:\Users\86150\Desktop\截图\usart.png)]
-
常用标准
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-asqBs9Ut-1635508650254)(C:\Users\86150\Desktop\截图\usart2.png)]
ps:RS-232与TTL的区别
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ybxLswTF-1635508650255)(C:\Users\86150\Desktop\截图\usart3.png)]
DMA
DMA简介
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O2Dz48uP-1635508650257)(C:\Users\86150\Desktop\截图\DMA.png)]
PS:上图DMA2应该是有5个通道,而不是7个