当前位置: 首页 > news >正文

stm32week16

stm32学习

十一.中断

4.使用中断

图片消失了

EXTI的配置步骤:

  1. 使能GPIO时钟
  2. 设置GPIO输入模式
  3. 使能AFIO/SYSCFG时钟
  4. 设置EXTI和IO对应关系
  5. 设置EXTI屏蔽,上/下沿
  6. 设置NVIC
  7. 设计中断服务函数

HAL库的使用:

  1. 使能GPIO时钟:__HAL_RCC_GPIOx_CLK_ENABLE
  2. GPIO/AFIO(SYSCFG)/EXTI:HAL_GPIO_Init()
  3. 设置中断分组:HAL_NVIC_SetPriorityGrouping,此函数仅需设置一次
  4. 设置中断优先级:HAL_NVIC_SetPriority
  5. 使能中断:HAL_NVIC_EnableIRQ
  6. 设计中断服务函数:EXTIx_IRQHandler,中断服务函数,清中断标志

STM32仅有:EXTI0~4、EXTI9_5、EXTI15_10,7个外部中断服务函数

十二.串口

1.通信基础

单工/半双工/全双工通信:

图片消失了

波特率:

  1. 比特率:每秒传送的比特数,单位bit/s
  2. 波特率:每秒传送的码元数,单位Baud
  3. 比特率 = 波特率 * log2M,M表示每个码元承载的信息量
  4. 二进制系统中,波特率数值上等于比特率

常见的串行通信串口

图片消失了

2.串口

串行通信接口:指按位发送和接收的接口。如:RS-232、422、485
RS-232现在逐渐被USB、无线网所取代
RS-232电平不能与COMS/TTL电平直接交换信息
现代设备常通过 USB转RS-232芯片实现兼容

图片消失了

3.UART/USART

一个是通用异步收发器,一个是通用同步异步收发器
常用的也是异步通信
如何区分UART/USART和其它通信:TX和RX交叉相连

USART的框图简化版:

图片消失了

设置UART/USART波特率:

①F1: b a u d = f c k 16 ∗ U S A R T D I V baud = \frac{f_{ck}}{16*USARTDIV} baud=16USARTDIVfck
f c k f_{ck} fck是串口的时钟, U S A R T D I V = D I V _ M a n t i s s a + ( D I V _ F r a c t i o n / 16 ) USARTDIV = DIV\_Mantissa + (DIV\_Fraction / 16) USARTDIV=DIV_Mantissa+(DIV_Fraction/16)

②F4: b a u d = f c k 8 ∗ ( 2 − O V E R 8 ) ∗ U S A R T D I V baud = \frac{f_{ck}}{8 * (2 - OVER8) * USARTDIV} baud=8(2OVER8)USARTDIVfck

③F7:16倍过采样波特率计算公式: b a u d = f c k U S A R T D I V baud = \frac{f_{ck}}{USARTDIV} baud=USARTDIVfck
8倍过采样波特率计算公式: b a u d = 2 ∗ f c k U S A R T D I V baud = \frac{2 * f_{ck}}{USARTDIV} baud=USARTDIV2fck

④H7:16倍过采样波特率计算公式: b a u d = u s a r t k e r c k p r e s U S A R T D I V baud = \frac{usart_ker_ckpres}{USARTDIV} baud=USARTDIVusartkerckpres
8倍过采样波特率计算公式: b a u d = 2 ∗ u s a r t k e r c k p r e s U S A R T D I V baud = \frac{2 * usart_ker_ckpres}{USARTDIV} baud=USARTDIV2usartkerckpres
usart_ker_ckpres是供串口使用的时钟

在Cube生成的代码中,我们实现业务逻辑的代码是写在回调函数:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {// 1. 判断是否为USART1触发的回调(支持多UART实例)if (huart->Instance == USART1) {// 2. 接收完成后,设置标志位(轻量级操作,避免中断内耗时)rx_complete_flag = 1;// 3. 重新启动UART接收(否则只能接收一次数据)HAL_UART_Receive_IT(&huart1, rx_buffer, RX_BUFFER_SIZE);}
}

4.寄存器介绍

控制寄存器1(CR1):

图片消失了

控制寄存器2(CR2):

图片消失了

控制寄存器3(CR3):

图片消失了

数据寄存器(DR):

图片消失了

状态寄存器(SR):

图片消失了

相关文章:

  • MIME类型详解及应用案例
  • 【QT】一个界面中嵌入其它界面(二)
  • 数据库存储空间告急?磁盘清理与归档策略全解析
  • docker介绍与常用命令汇总
  • 火山 RTC 引擎9 ----集成 appkey
  • BM25(Best Matching 25)介绍与使用
  • 基于Zynq SDK的LWIP UDP组播开发实战指南
  • 对抗性机器学习:AI模型安全防护新挑战
  • 在linux平台下利用mingw64编译windows程序
  • 码蹄集——N是什么、棋盘
  • 冒泡排序详解
  • thinkphp6实现统一监听并记录所有执行的sql语句除查询外
  • Unity使用sherpa-onnx实现说话人识别
  • DS1302实时时钟模块
  • Java-List集合类全面解析
  • CSS- 4.5 css + div 布局 简易网易云音乐 官网布置实例
  • 「NameCraft · 幻想命名器」开发记:我和 CodeBuddy 的一次奇幻共创之旅
  • 易境通散货拼柜系统:提高货代企业货物配载效率
  • CEF源码历史版本编译避坑指南
  • JSON学习笔记
  • 昆明一小区火灾调查报告:七旬夫妇身亡,生前拾荒存放大量可燃物
  • 巴基斯坦外长访华是否与印巴局势有关?外交部:此访体现巴方高度重视中巴关系
  • 著名文学评论家、原伊犁师范学院院长吴孝成逝世
  • 远洋渔船上的命案
  • 人民日报头版:紧盯“学查改”,推动作风建设走深走实
  • 聚焦中华文明精神标识,多校专家学者跨学科对话交流