STM32各模块

ops/2024/11/14 20:16:55/

1.工程文件结构:

在这里插入图片描述
startup前缀的汇编文件是来调用system前缀的文件来进行系统初始化和时钟配置,然后调用自定义的main函数,包括很多stm32f10x_it文件定义的中断处理函数。
stm32f10x.h定义了stm32所有外设寄存器描述,core_cm3文件定义了内核寄存器的一些功能。stm32f10x_conf.h主要是对标准库函数的一些配置操作,内部包含了所有标准库函数的头文件,而stm32f10x.h中也包含了这个stm32f10x_conf.h,所以无需重复包含即可调用标准库的函数。

2.定时器结构在这里插入图片描述

  1. 对于内部时钟RCC,只需要配置时基单元内的ARR自动重装器的

3.EXTI外部中断的结构

在这里插入图片描述

4.PWM模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ADC

在这里插入图片描述

DMA

在这里插入图片描述在这里插入图片描述

UART

在这里插入图片描述
起始位固定为低电平,停止位固定为高电平,停止位拉高电平,当新数据发送时,起始位会拉低电平表示发送开始。校验位要么无校验、偶校验或这奇校验。寄校验和偶校验都是确保1的个数为奇数或者偶数,若接收方收到后,1的数量与预期不符则判定发生错误。
停止位可以是0.5位、1位、1.5位、2位。最常见为1位。
数据位可以是5位、6位、7位、8位、9位。最常见的为8位。
在这里插入图片描述

IIC

在这里插入图片描述
所有设备都是开漏输出模式,原因是:
避免冲突:开漏输出+上拉电阻的设计
如果所有设备都使用推挽输出,在同一时刻可能会出现以下冲突:
一个设备试图将SDA线拉高(输出高电平),而另一个设备同时试图将SDA线拉低(输出低电平),这种情况会导致信号冲突,并可能损坏设备。

首先SDA和SCL由于上拉电阻的存在,当SDA和SCL都没有被设备驱动时,即总线空闲时,两个总线都是高电平。当主机要发送数据时,先将SDA拉低,以通知从设备准备接收数据,随后拉低SCL,往SDA上驱动高低电平数据,然后拉高SCL,方便从设备在SCK高电平阶段读取SDA获得一位数据,随后主设备再次拉低SCL,往SDA上发一位数据,再拉高SCL,让从设备读取SDA数据,依次类推,传输完7位地址数据+读写位以后,主设备释放SDA线(即SDA的GPIO口设置为输入状态),从设备的SDA线为开漏输出模式,在下一个时钟周期拉低SDA线表示确认收到数据ACK。在ACK之后,根据发送的最后一位是读还是写(0是写入,1是读取),来决定接下来是谁发送数据?如果是写,则主设备继续发送数据,还是按照SCK低电平时写入数据到SDA,从设备高电平时读取。如果是读,则从设备发送数据,SCL一直由主设备驱动,当SCL位低电平时,从设备传入一位数据到SDA,主设备在SCL高电平时读取该位。当接收方不再需要接收数据时,选择发送NACK,即不拉低SDA,保持SDA由上拉电阻导致的高电平,随后由主设备先拉高SCL,随后主设备拉高SDA,来生成停止条件,随后主设备释放SCL和SDK的输出控制。

SPI

在这里插入图片描述

在这里插入图片描述
在片选信号拉低时,开始传输,拉高时表示结束传输。


http://www.ppmy.cn/ops/133674.html

相关文章

LeetCode 热题100之技巧关卡

1.只出现一次的数字 思路分析1:使用哈希表存储每个数字和该数字出现的次数。遍历数组即可得到每个数字出现的次数,并更新哈希表,最后遍历哈希表,得到只出现一次的数字。 具体实现代码(详解版):…

前缀和 so easy! 力扣.128 最长连续序列 leetcode longest-consecutive-sequence

数组系列 力扣数据结构之数组-00-概览 力扣.53 最大子数组和 maximum-subarray 力扣.128 最长连续序列 longest-consecutive-sequence 力扣.1 两数之和 N 种解法 two-sum 力扣.167 两数之和 II two-sum-ii 力扣.170 两数之和 III two-sum-iii 力扣.653 两数之和 IV two…

【商城系统搭建流程】

商城系统的搭建流程可以分为以下几个步骤: 1.需求分析:确定商城系统的功能和特性,例如商品展示、购物车、订单管理、支付等。 2.系统设计:根据需求分析结果设计商城系统的架构,包括前端页面设计和后端数据库设计。 …

高级sql使用技巧

窗口函数(Window Functions): 窗口函数可以在结果集的行之间进行计算,例如计算移动平均值、排名等。在使用时,可以使用 OVER() 语句来定义窗口。例如: sql SELECT employee_id,salary,AVG(salary) OVER (P…

【deepin】vscode环境内安装 julia 语言

deepin 系统虽然脱胎于 Debian 系统,但是部分功能的语句仍然不同。 apt 的更新 sudo apt update sudo apt-get update sudo apt dist-upgrade安装更新 python sudo apt install python3 sudo apt install python3-pip python3 -m pip install --break-system-pac…

vue2使用 <component> 标签动态渲染不同的表单组件

在后台管理系统中,涉及到大量表单信息的修改和新增。现在想对模板中代码做一些简单的优化。 1. 使用 v-for 循环简化表单项 可以将表单项的定义提取到一个数组中,然后使用 v-for 循环来生成这些表单项。这将减少重复代码,提高可维护性。 2…

Big Data for AI实践:面向AI大模型开发和应用的大规模数据处理套件

作者:夕陌,临在,熊兮,道辕,得水,施晨 随着人工智能技术的快速发展,大模型在各个领域的应用日益广泛。大模型能够更好地模拟人类的认知能力,大幅提升机器在复杂任务上的表现。然而&am…

MySQL数据库:SQL语言入门 【下】(学习笔记)

5,TCL —— 事务控制语言(Transaction Control Language) 用于数据库的事务管理。 (1)事务的概念作用 事务(Transaction)指的是一个操作序列,该操作序列中的多个操作要么都做&#…