77条STM32知识,千万不能错过!(二)
39、DAC有两个寄存器,一个是DHR(Data HoldingRegister)数据保持寄存器,一个DOR(Data Output Register)数据输出寄存器。
真正起作用的是DOR寄存器,该寄存器把值给数模转换发生单元输出以VREF+为参考电压的电压值。
如果是硬件触发转换,系统将在1个ABP时钟周期后把值给DOR,如果是软件触发转换,时间为3个APB时钟周期。然后,均等待Tsetting时间(Typical为3us,Max为4us)后真正输出电压值。
40、DAC分8位模式和12位模式,其中后者可以选择左右对齐。
41、DMA仲裁器分为软件和硬件两种。软件部分分为4个等级,分别是很高优先级、高优先级、中等、低。硬件部分由通道的大小来决定优先级,越低优先级越高。
42、DMA有一个实时的传输数据量寄存器叫做DMA_CNDTR,最大值为65535,存放的是当前传输所要传输的数据量。当数据量变为0时,表明传输完成。
43、CAN总线(ControllerArea Network)。CAN控制器根据两根线上的电位差来判断总线电平,总线电平又分为显性电平和隐性电平,二者必居其一。
44、CAN总线具有6个特点:
1、多主控制
2、系统若软性
77条STM32知识,千万不能错过!(一)
1、 SYSCLK时钟源有三个来源:HSI RC、HSE OSC、PLL
<center><img src="http://mouser.eetrend.com/files/2019-11/博客/100045989-84119-1.png" alt=“” width="600"></center>
2、 MCO[2:0]可以提供4源不同的时钟同步信号。
3、 GPIO口有两个反向串联的二极管用作钳位二极管。
基于STM32的串口循环队列
先说串口,这个应该都知道吧!(不知道的童鞋,先把基本功学好)大部分单片机或者处理器都会带一个或者多个串口,方便进行数据的通信。
那么串口的循环队列是什么?这里以STM32的串口为例,进行解释说明。
假设串口一次只发一个数据,这倒是简单了,每次只对这一个数据进行判断,然后处理相关指令。但现实不会一直都这么美好,很多时候你收到的可能是一大串数据,你要先小心翼翼的把它们存好,然后再依次判断这里面有哪些指令要处理。
<center><img src="http://mouser.eetrend.com/files/2019-02/博客/100017812-60842-st1.png" alt=“” width="600"></center>
假设你定义了一个30个元素的数组a[30],每次串口收到数据都往里面存,存的时候地址加一。这个操作很简单吧,应该是都会的。
【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
<strong>STM32的GPIO介绍</strong>
<strong>STM32引脚说明</strong>
GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。
STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。
STM32的大部分引脚除了当GPIO使用之外,还可以复用位外设功能引脚(比如串口),这部分在【STM32】STM32端口复用和重映射(AFIO辅助功能时钟) 中有详细的介绍。
<strong>GPIO基本结构</strong>
每个GPIO内部都有这样的一个电路结构,这个结构在本文下面会具体介绍。
这边的电路图稍微提一下: