STM32学习(七)定时器
基本定时器
定时器就是计数器。以下是基本定时器的内容和相关HAL库函数
代码实践一
实践一:定时器实现定时发送数据
配置界面如下:
**(1)**Prescaler:对于分频器的设置
Counter Period:对于自动重装载寄存器的值,计数周期,用于计算时间周期
auto-reload preload:自动重装载的影子寄存器
**(2)**开启串口
**(3)**开启串口
所用的HAL库:
123456HAL_TIM_Base_Start_IT(&htim4);//中断模式开启定时器(-IT)void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//定时器更新中断函数,在到达设定的数值时,启动该函数,重新计数__HAL_TIM_GetCounter(&htim4)//用一个变量获取定时器的数据
函数如下:
12345678910111213141516171819202122232425262728293031323334353637383940414 ...
STM32学习(六)时钟源与时钟树
相关名词的简要介绍
时钟源与时钟树的主体部分如下图所示:
内部时钟:由单片机内部决定;
外部时钟:由晶振决定;
PLL锁相环:提供一个倍频器的作用(作用之一);
SYSCLK:系统时钟;
HCLK:AHB(先进高性能总线)的时钟线;
内存、内核、DMA:频率和HCLK保持一致;
APB1:USART2-5、SPI2-3、IIC、USB、CAN、通用定时器、基本定时器
APB2:USART1、SPI1、GPIO、ADC、高级定时器
FCLK:为中断采样提供信号,低功耗模式唤醒,在HCLK停止的情况下运行;
TO FLITFDCLK:flash编程接口的时钟,信号来源HSI;
TO USB:USB提供功能,来自PPL锁相环;
CSS:时钟安全系统,在HSE与PLCLK的情况下产生紧急制动,切换为HSI,保障时钟的稳定;
RTC和IWDG:实时时钟与看门狗,由LSI、LSE、和HSE的128分频输入;
MCO: cubemx中勾选相应的时钟输出功能,可以将时钟输出(不常用)。
总图如下:
一些主要参考资料
1.【STM32】超清晰STM32时钟树动画讲解_哔哩哔哩_bilibili
STM32学习(五)IIC
一些前置知识
IIC的基本原理
IIC串行总线有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。两条线都接上拉电阻,以确保总线空闲时刻为高电平,其中时钟信号是由主控器件产生。IIC总线支持多设备连接,允许多主机存在,对于并联在一条总线上的每个IIC设备都有唯一的地址**(即靠地址来区分每一个IIC设备)。**
起始信号
当时钟线(SCL)为高平时,数据线(SDA)从高电平跳变到低电平。
终止信号
当时钟线(SCL)为高平时,数据线(SDA)从低电平跳变到高电平。
应答信号
主机每发送一个字节(8个bit),就在第9个时钟脉冲期间释放数据线(SDA),由从机反馈一个应答信号。
应答信号**(SDA)为低电平**时,规定为有效应答位(ACK,简称应答位),表示从机成功地接收了该字节。
应答信号**(SDA)为高电平**时,规定为非应答位(NACK),一般表示从机接收该字节没有成功。
IIC的三种模式
类似串口,iic同时也有相应的三种通信模式。
轮询模式
从上至下一次为速度模式(标准100000,快速400000),其余一般不动。
主要用到的HAL库代码
123 ...
STM32学习(四)串口通信
一些前置知识
并、串行通信的区别
并行通信
串行通信
传输原理
数据各个位同时传输
数据按位顺序传输
优点
速度快
占用引脚资源少
缺点
占用引脚资源多
速度相对较慢
串行通信的分类
(*)1、按照数据传送方向,分为:
单工:数据传输只支持数据在一个方向上传输;
半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口。
全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端。
(***) 2、按照通信方式,分为:
同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口。
异步通信:不带时钟同步信号。比如:UART(通用异步收发器),单总线。
在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。例如,通讯中通常双方会统一规定在时钟信号的上升沿或者下降沿对数据线进行采样。
在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些用于同步的 ...
STM32学习(三)外部中断
一些前置知识
内部原理简介
首先信号进入输入驱动器,详情见上一篇文章。
信号进入后顺序如下:
边路检测电路:信号进来首先经过上升下降选择寄存器,由CubeMx进行配置。第一个即为寄存器的配置。第二个为输入信号上拉下拉的配置。
接着,经过一个或门。
软件中断寄存器:模拟产生中断,用处可暂时忽略。
事件屏蔽寄存器:非相关知识,之后了解。
输入后,
请求挂起寄存器:相应位置变为’1’,即输入高电平信号。
中断屏蔽寄存器:CubeMx已配置好。
经过与门,进入NVIC。
NVIC主要掌管中断向量表。主要由抢占优先级和响应优先级。主要规则如下:
因此,如要在中断处理函数中使用HAL_DELAY,需要线配置“时钟滴答”的优先级,才可打断中断,实现延时。
代码实践
外部中断实现摁键控制亮灭
在stm32f103xx_it.c中进行改写,如下图所示:
123456789101112131415void EXTI9_5_IRQHandler(void){ /* USER CODE BEGIN EXTI9_5_IRQn 0 */ HAL_Delay(10);if(HAL_GPIO_ ...
STM32学习(二)GPIO
一些前备知识
两种MOS管
首先,在翻阅一些B站上的视频后,我发现大部分GPIO都讲到了其内部结构,如下图所示:
由于本人没学过模电数电,故不了解mos管,查阅后,了解后大致如下 :
1.分为p mos和n mos,两种区别仅为底下的半导体不同,P型的是以p型为衬底,N型同理。n型半导体是硅掺5价磷,p掺3价硼。故前者带电子,后者有空穴。
2.n mos管实际上是由两个半导体组成,再加上一个栅格来控制导通(如果没有栅格,则无论正反向均导通不了),栅格通电,吸引电子,挤掉空穴,形成n沟道,导通。p型反之。箭头代表电子移动方向。如图所示:
3.n mos需要达到一定电压才可导通,p则需要小于一定电压。
上拉电阻和下拉电阻
1.设置上拉电阻,控制默认为高电压,当外部电路为低电压,产生数字信号,读取数据。
2.设置下拉电阻,控制默认为低电压,当外部电路为高电压,产生数字信号,读取数据。
TTL肖特基触发器(施密特触发器)
设置阈值电压,消除电压的波动影响,将图形变化变为数字变化(01变化)。
GPIO的八种模式
(1)模拟输入:直接读取具体电压值,上拉下拉断开
(2)上拉输入:上拉电阻闭合 ...
stm32学习(一)序言
学习stm32的初衷
由于我参加了足基的春招,铩羽而归,发现之前所学不成体系,故以写博客的方式来梳理知识,希望可以在stm32上有些许收获。