
STM32
文章平均质量分 58
Wizard797
这个作者很懒,什么都没留下…
展开
-
ADC数模转化
ADC 简介VDDA 接入3.3V ,VSSA接GND,所以ADC的输入电压范围是0 ~3.3V逼近型 比较 一般采用二分法 8位数据时 比较八次 既可以 找到对应的电压值 12位时 需要比较12次。原创 2023-01-02 16:32:34 · 3008 阅读 · 0 评论 -
STM32 RCC时钟控制
在库函数里面关于CFGR主要是设置了HCLK、APB1和APB2的时钟频率,还有通过寄存器后两位选择HSE/HSI/PLL这三个其中一个作为系统时钟。在 RCC_CR中 的第十六位 为 HSEON 将其置于一时 则是将 外部高速时钟使能。一般配置为系统时钟 = 锁相环时钟 (PLLCLK = SYSCLK) 此时为72M Hz。1、将HCLK设置为SYSCLK的频率,即HCLK频率为168MHZ。将CRR_CFGR寄存器复位。原创 2022-11-26 21:36:25 · 592 阅读 · 0 评论 -
中断服务函数 ENVIC_CONFIG 的配置
分为 GPIO口配置 中断函数配置 优先级配置原创 2022-11-26 18:26:43 · 362 阅读 · 0 评论 -
STM32 中断系统及应用
*采用 void _EXTILineConfig :为外部中断需要的函数调用此函数 既可以配置AFIO的数据选择器 来选择想要配置的中断引脚。*触发事件的响应方式 :事件中断为 中断不进入CPU 而是通向其他外设 比如触发ADC转换 或者为触发别的外设工作 属于外设之间的联合工作。中断函数 为弱定义 可在需要的文件中定义(若写错了则会调用 hd.s中的中断服务函数)*但是相同的 PIN 不可以同时触发中断 (即为 PA0 和PB0 不能同时使用)用于统一分配中断优先级和管理中断的(NVIC为内核外设)原创 2022-11-26 16:45:18 · 344 阅读 · 0 评论 -
STM32串口通信
其中 USART_FLAG_TXE:表示数据缓冲区是否为空,为空时置1,表示可以写数据到数据缓冲区,有可能数据没有发送完。需要对其进行初始化 (编译器在赋予i 值时为不确定的值)在stm32中发挥串口的极致功能 会在不同的GPIO口有不同功能的重映射。9位包含一个数据寄存器TDR 和一个接受数据寄存器RDR。将两个字节 分别放置于高八位 和低八位 后在分别发送。其中 nRTS 和nCTS 中的n 表示低电平有效。其中IE 即为中断使能 位。调用八次发送一个字节的函数。TE 相当于小门。原创 2022-11-26 15:40:23 · 1068 阅读 · 0 评论 -
串口USART中的USART_IT_RXNE,USART_IT_TC,USART_IT_TXE
当USART_DR中的数据传送到移位寄存器后,TXE被设置,此时移位寄存器开始向TX信号线按位传输数据,但因为TDR已经变空,程序可以把下一个要发送的字节(操作USART_DR)写入TDR中,而不必等到移位寄存器中所有位发送结束,所有位发送结束时(送出停止位后)硬件会设置TC标志。和原来8051的TI方式一样,都是发送后才进中断,需要在发送函数中先发送一个字节触发中断。另一个是程序看不到的移位寄存器,对应USART数据发送有两个标志,一个是TXE=发送数据寄存器空,另一个是TC=发送结束。原创 2022-11-26 14:46:57 · 6923 阅读 · 0 评论 -
STM32 系统定时器
1.SysTick 内核里面外设中断优先级 和 片上的外设优先级相比哪个高?内核的中断·IRQn<0 则是配置内核寄存去 否则是配置NVIC 外设寄存器。AHB 总线时钟72 Mhz 在其除以8 后为9 MHz。CURRENT 若要实时监控的计数的值 则可以读取该寄存器。计数器的值 在 STK_VAL 实时可以查询的到。RELOAD 为24位有效。原创 2022-11-25 11:47:23 · 408 阅读 · 0 评论 -
PIN的推完输出和开漏输出
取反后 低变为高)上面的pmos管不导通 而下面的nmos管导通 则取得为自身电平;反之 由VDD决定 高电平。3.开漏输出具有“线与”功能,一个为低,全部为低,多用于IIC和SMBUS总线。2.如果要输出高电平,则需要外接上拉。1.只能输出低电平,不能输出高电平。原创 2022-11-25 11:35:34 · 326 阅读 · 0 评论 -
STM IIC库函数
读写 在一个总线上的所有设备 要协调好 不然会出现错误指令的读取)配置ownaddress1 时 要该地址是I2C 总线上唯一的。调用该库函数后 其会返回一个 SET 或 RESET 值。调用该库函数 使得I2C (1或其他)产生起始条件。I2C Send7bitAddress 库函数。3.寻址模式 (7位 还是10位—有要求的)I2C GenerateSTART 库函数。I2C GenerateSTOP 库函数。配置应答使能位 寄存器。I2C SendData 库函数。I2C Cmd 库函数 使能。原创 2022-11-25 00:00:01 · 623 阅读 · 0 评论 -
IIC外设 架构分析
start 数据位 写1时:两个总线SCL 和SDA 配合产生 起始信号。SMBA:i2c 协议的外设也可以用 SMBus协议通信。通过 时钟控制逻辑中 控制SCL线的 (控制通信速度)PCLK1 = APB1 的时钟 (默认为36M Hz)可通过才数据位 检测总线上是否有数据正在通信。配置为0时: 将低电平为高电平的2倍。时钟控制寄存器(CCR)原创 2022-11-24 23:21:46 · 1124 阅读 · 0 评论 -
GPIO口的输入和输出
开漏输出OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。STM32F103ZET6一共有7组IO口,每组IO口有16个IO,每组IO口包含7个寄存器,一共可以控制一组GPIO的16个IO口。作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。拉高,然后可以读IO的值;原创 2022-11-24 22:08:26 · 2063 阅读 · 0 评论 -
GPIO口 寄存器的使用
在修改 ODR 时,为了确保对端口 6 的修改不会影响到其他端口的输出,需要对端口的原始数据进行保存,之后再对端口 6 的值进行修改,最后再写入寄存器(即读-改-写形式改变位的状态)。而对 BSRR 的操作,是写 1 有效,写 0 不改变原状态,因此可以对端口 6 置 1,其他位保持为 0。称为端口位设置/清除寄存器,只写寄存器,32位, 既能控制管脚为高电平,也能控制管脚为低电平,对寄存器高 16位 写1 对应管脚为低电平,对寄存器低16位写1对应管脚为高电平。管脚对于位写1为高电平,写 0 为低电平。原创 2022-11-24 22:15:05 · 2022 阅读 · 0 评论 -
I2C 的物理层和协议层
单片机STM32 的IIC协议 物理层和协议层原创 2022-11-24 22:35:33 · 179 阅读 · 0 评论 -
STM32 IIC通信过程
IIC通信所需要的寄存器 位设置原创 2022-11-24 22:40:27 · 186 阅读 · 0 评论