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):

图片消失了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/81536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是RDMA?

什么是RDMA? RDMA(RemoteDirect Memory Access)技术全称远程直接内存访问,就是为了解决网络传输中服务器端数据处理的延迟而产生的。它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。这允许高吞吐、低延迟的网络…

golang 安装gin包、创建路由基本总结

文章目录 一、安装gin包和热加载包二、路由简单场景总结 一、安装gin包和热加载包 首先终端新建一个main.go然后go mod init ‘项目名称’执行以下命令 安装gin包 go get -u github.com/gin-gonic/gin终端安装热加载包 go get github.com/pilu/fresh终端输入fresh 运行 &…

【数据结构篇】链式结构二叉树

目录: 一 二叉链的概念与结构: 1.1 概念: 1.2 结构: 二 二叉链的实现: 2.1 二叉树的构建: 2.2 二叉树的遍历: 2.2.1 前序遍历: 2.2.2 中序遍历: 2.2.3 后序遍历…

【MySQL】02.数据库基础

1. 数据库的引入 之前存储数据用文件就可以了,为什么还要弄个数据库? 文件存储存在安全性问题,文件不利于数据查询和管理,文件不利于存储海量数据,文件在程序中控制不方便。而为了解决上述问题,专家们设计出更加利于…

什么是 Langchain 以及其核心组件

LangChain 官方文档:LangChain 一、什么是Langchain LangChain 是一个用于构建基于LLM的应用框架,它提供了对 LLM API 的封装和扩展,使开发者能够更方便地构建复杂的应用。 个人理解:用类比的方法来说,LangChain类似…

博客系统功能测试

博客系统网址:http://8.137.19.140:9090/blog_list.html 主要测试内容 功能测试、界面测试、性能测试、易用性测试、安全测试、兼容性测试、弱网测试、安装卸载测试、压力测试… 测试方法及目的 利用selenium和python编写测试脚本,对博客系统进行的相关…

项目制作流程

一、使用 CRA 创建项目 npx create-react-app name 二、按照业务规范整理项目目录 (重点src目录) 三、安装插件 npm install sass -Dnpm install antd --savenpm install react-router-dom 四、配置基础路由 Router 1. 安装路由包 react-router-dom …

ngx_http_random_index_module 模块概述

一、使用场景 随机内容分发 当同一目录下存放多份等价内容(如多张轮播图、不同版本静态页面等)时,可通过随机索引实现负载均衡或流量分散。A/B 测试 通过目录请求自动随机分配用户到不同测试组,无需后端逻辑参与。动态“首页”选…

智能权限守护者:基于Python描述符的动态角色控制实现

智能权限守护者:基于Python描述符的动态角色控制实现 引言:当描述符遇见权限管理 在Python的魔法方法体系中,描述符(Descriptor)以其优雅的属性访问控制机制著称。当我们将描述符与RBAC(基于角色的访问控制)模型结合,就能创造出既灵活又安全的动态权限管理系统。本文…

Linux 的 UDP 网络编程 -- 回显服务器,翻译服务器

目录 1. 回显服务器 -- echo server 1.1 相关函数介绍 1.1.1 socket() 1.1.2 bind() 1.1.3 recvfrom() 1.1.4 sendto() 1.1.5 inet_ntoa() 1.1.6 inet_addr() 1.2 Udp 服务端的封装 -- UdpServer.hpp 1.3 服务端代码 -- UdpServer.cc 1.4 客户端代码 -- UdpClient.…

Linux 内核等待机制详解:prepare_to_wait_exclusive 与 TASK_INTERRUPTIBLE

1. prepare_to_wait_exclusive 函数解析 1.1 核心作用 prepare_to_wait_exclusive 是 Linux 内核中用于将进程以独占方式加入等待队列的关键函数,其主要功能包括: 标记独占等待:通过设置 WQ_FLAG_EXCLUSIVE 标志,表明此等待条目是独占的。 安全入队:在自旋锁保护下,将条…

【Android构建系统】了解Soong构建系统

背景介绍 在Android7.0之前,Android使用GNU Make描述和执行build规则。Android7.0引入了Soong构建系统,弥补Make构建系统在Android层面变慢、容易出错、无法扩展且难以测试等缺点。 Soong利用Kati GNU Make克隆工具和Ninja构建系统组件来加速Android的…

信息学奥赛一本通 1539:简单题 | 洛谷 P5057 [CQOI2006] 简单题

【题目链接】 ybt 1539:简单题 洛谷 P5057 [CQOI2006] 简单题 【题目考点】 1. 树状数组 模板题及讲解:洛谷 P3374 【模板】树状数组 【解题思路】 解法1:树状数组 该有01构成数组初值都为0。 某位置的元素被修改奇数次后值为1&#x…

仓颉开发语言入门教程:搭建开发环境

仓颉开发语言作为华为为鸿蒙系统自研的开发语言,虽然才发布不久,但是它承担着极其重要的历史使命。作为鸿蒙开发者,掌握仓颉开发语言将成为不可或缺的技能,今天我们从零开始,为大家分享仓颉语言的开发教程,…

玉米籽粒发育

成熟玉米籽粒的结构 玉米籽粒的组成 成熟的玉米籽粒主要由以下三部分组成: 母体组织:包括种皮、胎座和花梗。种皮由珠被发育而来,起到保护种子的作用,并在种子的休眠和萌发中发挥重要作用。胚:包含根分生组织、茎分…

sherpa-ncnn:音频处理跟不上采集速度 -- 语音转文本大模型

目录 1. 问题报错2. 解决方法 1. 问题报错 报错: An overrun occurred, which means the RTF of the current model on your board is larger than 1. You can use ./bin/sherpa-ncnn to verify that. Please select a smaller model whose RTF is less than 1 fo…

Postman一直打不开的解决办法

Postman 是一款非常流行的开源 API 开发工具,主要用于构建、测试、调试和文档化应用程序接口(API)。但有时它的性能不会特别稳定,功能限制和扩展性不足;应用于开发、测试、运维等环节,尤其在开发 RESTful A…

问题|对只允许输入的变量是否进行了更改

“对只允许输入的变量是否进行了更改”这一问题的核心是:在编程中,某些变量被设计为仅用于输入(只读),但在代码中可能被意外修改,导致潜在错误。以下是详细解释: 1. 什么是“只允许输入的变量”…

RPC与SOAP的区别

一.RPC(远程过程调用)和SOAP(简单对象访问协议)均用于实现分布式系统中的远程通信,但两者在设计理念、协议实现及应用场景上存在显著差异。 二.对比 1.设计理念 2.协议规范 3.技术特性 4.典型应用场景 5.总结 三.总结…

c#的内存指针操作(仅用于记录)

c#也可以直接操作内存指针,如下为示例: unsafe {byte[] a {1,2,3};fixed (byte* p1 a, p2 &a[^1]){Debugger.Log(1, "test", $"max index:{p2-p1}");Debugger.Log(1, "test", $"address:{(long)p1:X}")…