STM32
勇士后卫头盔哥
这个作者很懒,什么都没留下…
展开
-
ADC功能框图及其初始化结构体介绍
功能框图ADC英文为Analog to Digital,模拟数字转化器,对于STMF103来说有三个ADC,分别为ADC1,ADC2,ADC3,分辨率为12位,每个ADC具有18个通道,其中外部通道16个,对于ADC它是用来测量外部的模拟量,模拟量它是测电压的而不是测电流如下图,我们把框图分为7个部分第一部分:电压的输入范围,我们的STM32的GPIO的电压最高为3.3V,对于ADC输入...原创 2020-04-15 22:16:54 · 4416 阅读 · 0 评论 -
基本定时器
前言按定时器的功能可以分为定时,输出比较(输出PWM波),输入捕获(测量输入信号的脉冲宽度,频率),互补输出,按照定时器分类可以分为基本定时器(只有定时功能),通用定时器(有前三个功能),高级定时器(有全部功能),对于我们的F103系列有2个高级定时器TIM1和TIM8,4个通用定时器TIM2/3/4/5,2个基本定时器TIM6和TIM7基本定时器没有外部的GPIO,不能实现输入捕获和输...原创 2020-04-13 23:11:20 · 435 阅读 · 0 评论 -
ADC单通道读取中断和DMA读取
中断读取我们可以设置ADC数值转化转化完后触发一个中断,在中断服务函数去读取数据,以下是实验代码bsp_adc.c#include "bsp_adc.h"static void gpio_Init(){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);//使能GPIO时钟 GPIO_InitTypeDef GPIO...原创 2020-04-11 21:15:10 · 3860 阅读 · 0 评论 -
SPI完整讲解(二)
SPI初始化结构体介绍跟其它外设一样,STM32标准库提供了SPI初始化结构体及初始化 函数来配置SPI外设.初始化结构体及函数定义在库文件“stm32f10x_spi.h” 及“stm32f10x_spi.c”中,编程时我们可以结合这两个文件内的注释使用或参考库帮助文档.配置完这些结构体成员后,要调用SPI_Init函数把这些参数写入到寄存器中,实现SPI的初始化,然后调用SPI_Cmd来使...原创 2020-04-06 23:26:38 · 1852 阅读 · 0 评论 -
SPI完整讲解(一)
SPI协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线,它被广泛地使用在ADC,LCD等设备与MCU间,要求通讯速率较高的场合。SPI物理层上图中下面是作为SPI通信的主机,上面可以挂载不同的从机,同IIC一致,总线上是可以挂载很多设备的SS线:每个从设备都有独立的这一条SS信号线,本信号线独占主机...原创 2020-04-02 22:00:27 · 4328 阅读 · 0 评论 -
I2C完整讲解(二)
库函数介绍现在我们来看下I2C库函数的时候以及相关知识点I2C_InitTypedef(I2C初始化结构体)typedef struct{ uint32_t I2C_ClockSpeed; /*!< Specifies the clock frequency. This param...原创 2020-03-30 21:53:43 · 6587 阅读 · 2 评论 -
I2C完整讲解(一)
**I2C 通讯协议(Inter-Integrated Circuit)**是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART,CAN等通讯 协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。I2C协议是一个支持多设备的总线,该总线包括两条,一条双向串行数据线(SDA),一条串行时钟线 (SCL).数据线即用来表示数据,时钟线用于数 据...原创 2020-03-19 21:19:54 · 4457 阅读 · 0 评论 -
SysTick-系统定时器
Systick系统定时器是内核的24位定时器,只能够递减,嵌套在NVIC中,所有的Cortex-M内核的单片机都具有这个定时器,系统嘀嗒校准值固定为9000,当系统嘀嗒时钟设定为9MHz(HCLK/8的大值),产生1ms时间基准功能框图如下:下面是SysTick 控制和状态寄存器,只有0,1,2,16这四个位有效Systick的时钟源可以选择AHB/8或者AHBSystick寄存器操...原创 2020-03-15 10:12:28 · 636 阅读 · 0 评论 -
EXTI功能框图讲解
EXIT的全称是外部中断/事件控制器,用来管理GPIO电平变化而产生的中断,最后传给内核的NVIC,每一个GPIO都可以产生中断EXTI控制器的主要特性如下1.每个中断/事件都有独立的触发和屏蔽2.每个中断线都有专用的状态位3.支持多达20个软件的中断/事件请求4.检测脉冲宽度低于APB2时钟宽度的外部信号5.参见数据手册中电气特性部分的相关参数框图:红色的对应是中断绿色的对应是...原创 2020-03-12 00:38:19 · 1792 阅读 · 0 评论 -
STM32中断概述
我们的STM32中断支持嵌套中断,比如正在执行优先级为2的中断的中断服务程序,然后现在来了一个优先级为1的中断,那么会跳到优先级为1的中断的中断服务程序中去执行,执行完再返回优先级为2的中断的中断服务程序,根据中断类型可以分为系统异常(比如SysTick)和外部中断,见下图,灰色部分为系统异常,白色部分为外部中断,数字越低优先级越高看到上面这么多复杂的中断,总得有一个控制器来管理它们,这...原创 2020-03-11 17:34:37 · 445 阅读 · 0 评论 -
通信的基本概念
通信中根据数据传送方式可以分为并行和串行串行:USART,I2C,SPI,并行:SDIO(4位),FSMC(16位)根据数据通信方向可以分为全双工,半双工,单工全双工:USART,SPI半双工:SPI单工:I2C根据数据传输方式可以分为同步(由时钟控制)和异步(有起始位和停止位)同步:异步:USART在同步通讯中,数据信号所传输的内容绝大部分就是有效数据,而异步通讯中包...原创 2020-03-11 16:04:22 · 941 阅读 · 0 评论 -
配置HSE时钟
我们来写一个配置HSE时钟的函数1.使能HSE,等待HSE使能成功2.进行FALSH的预指令操作3.设置HCLK,PCLK2,PCLK1比例4.配置锁相环,选择HSE 1分频5.使能锁相环,等待PLL稳定6.选择PLL作为系统时钟代码:void HseConfig(uint32_t RCC_PLLMul_x){ ErrorStatus result; // 把RC...原创 2020-03-10 22:51:18 · 397 阅读 · 0 评论 -
启动文件详解
启动文件大致可以归纳为以下部分1.初始化栈指针 SP=_initial_sp,初始化堆2.初始化程序计数器指针 PC=Reset_Handler,程序复位开始的地方3.设置堆、栈的大小(栈用来保存局部变量,函数的开销)4.初始化中断向量表5. 配置外部 SRAM 作为数据存储器(这个由用户配置,一般的开发板可没有外部 SRAM)6.调用 SystemInit() 函数配置 STM32...原创 2020-03-08 23:44:51 · 948 阅读 · 0 评论 -
时钟树详解
在STM32的启动文件中会调用调用固件库函数中的SystemInit(在文件system_stm32f10x.c)来初始化时钟,把时钟初始化为72Mhz,先来看下时钟树的整体图先看锁相环时钟的设置我们先看到HSE,什么是HSE,HSE就是High Speed External Clock signal,即高速的外部时钟,它的来源是无源晶振(4-16M),通常使用8M,用RCC_CR时钟控制寄...原创 2020-03-08 17:42:06 · 7201 阅读 · 0 评论