stm32
文章平均质量分 80
需要代码的请加微信:ssh18188,注明CSDN
Swiler
就凭一把伞,躲过一阵潇潇的冷雨,也躲不过整个雨季
展开
-
STM32之RTC时钟,闹钟,日历
RTC时钟的一些功能介绍RTC时钟即实时时钟,它提供了用于管理所有低功耗模式的自动唤醒单元,还提供了具有可编程闹钟中断功能的日历时钟/日历。并且可以自动将月份的天数补偿为 28、29(闰年)、30 和 31 天。并且还可以进行夏令时补偿。中断屏蔽事件:有两个闹钟,时间戳,入侵检测,唤醒中断。硬件上需要注意的部分若要使用rtc功能,并且能够掉电继续工作,那么要外接纽扣电池或其他电池电源。这里参考的是STM32F767芯片及正点的底板的设计原理图(用BAT54C做多电源供电电路,当单片机上电时,使原创 2022-04-13 13:15:19 · 8125 阅读 · 1 评论 -
FatFs文件系统移植过程及中度分析
FatFs 是一个通用的文件系统(FAT/exFAT)模块,用于在小型嵌入式系统中实现FAT文件系统。 FatFs 组件的编写遵循ANSI C(C89),完全分离于磁盘 I/O 层,因此不依赖于硬件平台。它可以嵌入到资源有限的微控制器中,如 8051, PIC, AVR, ARM, Z80, RX等等,不需要做任何修改。如果要进行移植的话可以直接看后面的移植步骤,前面是对文件系统中的一些常见的代码进行简单介绍。本文比较长,可以先收藏再看。首先大致看看文件系统源码的目录结构。在下载好文件系统的源码包解压原创 2022-04-10 20:58:30 · 3693 阅读 · 0 评论 -
STM32之SPI详细解析
SPI介绍SPI协议,用来传输数据的一种标准化协议。SPI包括这些独特的特点:主模式和从模式双向模式从模式选择输出模式故障错误标志与CPU中断能力双缓冲数据寄存器具有可编程极性和相位的串行时钟在等待模式下对SPI操作的控制引脚描述: MOSI:此引脚用于在配置为主主模块时从SPI模块中传输数据,并在配置为从主模块时接收数据。(主出从入) MISO:在配置为SPI模块时从SPI模块中传输数据,在配置为主模块时接收数据。(主入从出) SS:(低有效原创 2022-03-13 15:36:14 · 28603 阅读 · 1 评论 -
STM32之IIC详细解析
原理介绍不多说,直接分析先看IIC的一些特性由下图可以知道,IIC的传输是同步传输的,具有强制性的起始信号、停止信号、ACK响应信号、7位的从机地址。但是时钟拉伸(每一个时钟脉冲的时间)、软件复位等可以用户自定义,还可以选择10位从机地址的设备,这解决了IIC只能接128个设备的限制问题。并且在挂载多个从机的情况下,可以设置起始字节(start byte)。关于总线的逻辑0和逻辑1由于可以连接各种各样的设备,总线的逻辑上的“0”(LOW)和“1”(HIGH)的级别不是固定的,而是依赖于VDD的相关原创 2022-03-12 01:47:12 · 15246 阅读 · 1 评论 -
STM32之简易GUI(多级菜单进阶版)
很久之前,写过一个简易的多级菜单,如今回头看,我都不敢承认那玩意是自己写的,于是打算重新写过一个,并且做成一个简易的GUI。原来用的OLED,现在改成了TFT(ST7789驱动)。但是答题的思路还是不变的。先说说思路,由于选择的是一个没有触摸的屏幕,于是就要加上物理按键。这样才能操作屏幕嘛。按照面向对象的思想,我将整个GUI结构分为三类:按键,显示,动作。按键用来控制屏幕,进行上滑下滑切入切出菜单;显示则作为每一级菜单的背景,并且将菜单设置为静态显示(即每次切换只显示一次);动作则用来链接各种显原创 2022-03-10 11:25:47 · 14489 阅读 · 14 评论 -
STM32之LCD液晶屏(ILI9341)模拟8080时序
配置8080时序的LCD液晶屏8080的控制线有四根:RD 写使能,WR 读使能,DC数据/命令,CS 片选8080总线存在许多接口:8/9/16/18位接口8080通用时序读时序LCD_CS = 0; //片选选中 LCD_DC = 1; //读数据 LCD_WR = 1; //禁止写 LCD_RD = 0; //开始读data = DATAIN(); //读取数据 LCD_RD = 1; //结束读LCD_CS = 1; //结束片选写时序DC =原创 2022-02-26 18:54:23 · 10619 阅读 · 5 评论 -
STM32之三种定时器的不同功能
配置定时器定时器分类(STM32F103RCT6)定时器相关结构①时钟源定时器时钟 TIMxCLK,即内部时钟 CK_INT,经 APB1 预分频器后分频提供,如果APB1 预分频系数等于 1,则频率不变,否则频率乘2,库函数中 APB1 预分频的系数是 2,即 PCLK1=36M,所以定时器时钟 TIMxCLK=36*2=72M。②计数器时钟定时器时钟经过 PSC 预分频器之后,即 CK_CNT,用来驱动计数器计数。PSC 是一个16 位的预分频器,可以对定时器时钟 TIMxCLK 进行原创 2022-02-23 13:18:48 · 7532 阅读 · 0 评论 -
STM32之串口相关配置
配置串口串口简介 通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART(Universal Asynchronous Receiver and Transmitter),它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是UA原创 2022-02-23 12:59:48 · 7854 阅读 · 0 评论 -
STM32之DS18B20温度传感器
10.配置DS18B20温度传感器配置初始化函数DS18B20的通信协议为单总线通信协议首先由主机发送一个复位脉冲约480960us;然后总线被拉高;在1560us之后传感器向单片机发送一个约60~240us的存在脉冲,然后总线被拉高。uint8_t DS18B20_Rst(void){ DS18B20_GPIO_Config (); DS18B20_DQ_1; DS18B20_Mode_Out_PP(); DS18B20_DQ_0; Delay_us(7原创 2022-02-22 22:49:44 · 5356 阅读 · 3 评论 -
STM32之外部中断+按键
EXIT简介EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的 20个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。外部中断配置使用 GPIO 之前必须开启 GPIO 端口的时钟;用到 EXTI 必须开启 AFIO 时钟。因为配置 EXTI 信号源的时候需要用到 AFIO 的外部中断控原创 2022-02-20 19:53:34 · 6866 阅读 · 5 评论 -
STM32之GPIO配置(寄存器/库函数)
GPIO初始化结构体GPIO初始化先声明GPIO初始化的结构体;然后打开GPIO所挂载的总线的时钟;再对结构体成员进行配置,包括GPIO的引脚,模式,速度;最后对GPIO的结构体进行初始化并选定指定的GPIO组。GPIO_Mode相关内容模拟输入、浮空输入、下拉输入、上拉输入、通用开漏输出、通用推挽输出、复用开漏输出、复用推挽输出。GPIO相关函数①GPIO初始化函数void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_In原创 2022-02-20 19:34:46 · 3824 阅读 · 0 评论 -
STM32之从零开始构建一个工程
构建自己的STM32工程STM32工程组件相关的芯片包去ST官网下载就行,有固件库、HAL库等…STM32相关组件,从Device文件夹中获取相关.c文件和.h文件和启动文件include文件夹中包含stm32f10x.h和system_stm32f10x.h两个文件。用来设置系统和总线始终,系统启动时调用其中的SystemInit()函数设置系统时钟设置系统和总线始终,系统启动时调用其中的SystemInit()函数设置系统时钟。Source文件夹中包含system_stm32f10x.c和原创 2022-02-20 19:18:32 · 737 阅读 · 0 评论 -
NRF24L01初学(二)驱动函数的基本认识
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、NRF24L01基本函数介绍二、接收或发送模式配置过程三、具体函数介绍1.针对NRF24L01对SPI进行修改2.NRF24L01初始化3.配置SPI的传输速度4.往串行Flash写入并接收一个字节数据5.检测NRF24L01硬件连接是否正常6.SPI写寄存器7.SPI读寄存器8.在指定位置读出指定长度的数据9.在指定位置写入指定长度的数据10.将NRF24L01配置为接收模式11.将NRF24L01配置为发送模式12.NRF2原创 2021-06-14 20:59:55 · 548 阅读 · 0 评论 -
STM32之ADC的使用
什么是ADCADC,即Analog-to-Digital Converter,指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。可以将真实世界的模拟信号,例如温度、压力、声音或者图像等,转换成更容易储存、处理和发射的数字形式。一.利用stm32cubeMX勾选ADC1的IN1我这用的是stm32g070rb,只有ADC1。然后打开串口,通过串口来看采样数据。二.编写相关代码1.先写一个串口发送函数,将采样值通过串口发送出去。这里并没有使用DMA模式,也原创 2021-04-28 15:56:50 · 916 阅读 · 1 评论 -
STM32串口DMA模式发送接收数据并控制LED灯
什么是DMADMA即直接存储器访问,Direct Memory Access.是外设和存储器或存储器之间的告诉数据传输。DMA传输方式不用CPU直接控制传输,而是在RAM和IO设备之间直接进行数据传输的通道,大大提高CPU的效率。通过STM32cubeMX来配置串口DMA模式首先打开串口,这里使用的是串口2,波特率115200,字长8Bit。并且使能串口2中断。然后给串口2的两个IO口配置DMA通道。在keil中编写相关程序代码1.在uart.c中添加串口重定向函数//串口发送函数HAL_原创 2021-04-27 23:16:11 · 2531 阅读 · 2 评论 -
stm32单片机I2C总线协议初学
I2C协议是个啥?IIC总线是Philips公司在八十年代推出的一种串行,半双工总线。主要用于近距离、低速的芯片之间的通信,IIC总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟SCL用于通信双方时钟的同步。IIC总线硬件结构简单,成本较低,因此在各个领域得到广泛的应用。IIC总线是一种多主机总线,连接在IIC线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能来防止错误产生;每个连接到IIC总线上的原创 2021-04-24 23:18:25 · 292 阅读 · 0 评论 -
ESP8266+AT指令连接ONENET,POST和GET方式
AT指令连接步骤1.AT+RSTesp8266复位2.AT检测是否连接成功3.ATE0关闭命令字符回显4.AT+CWMODE=3把模块设置为AP+Station模式5.AT+CWJAP=“","”配置AP参数第一对引号内填写接入点名称,第二对引号内填写密码。注意:完整指令如下:AT+ CWSAP= ,,, ssid:接入点名称pwd:密码chl:通道号ecn:加密方式6.AT+CIFSR查看该模块的IP地址,在AP模式下不能用。7.AT+CIPSTART=“TCP原创 2021-04-24 22:59:07 · 4468 阅读 · 12 评论 -
NRF24L01初学(一)认识相关寄存器及操作指令
文章目录前言一、特性和引脚分布1.参考数据2.结构框图3.引脚及其功能二、SPI指令及寄存器地址1.SPI指令2.寄存器地址3.定义数据发送和接收宽度三、基本的用户自定义函数四、硬件部分1.原理图2.模块引脚定义总结前言NRF24L01是一款工作在2.4~2.5Ghz世界通用ISM频段的单元无线收发器芯片。无线收发器包括:频率发生器、增强型SchockBurst模式控制器、功率放大器、晶体振荡器、调制器、解调器。输出功率、频道选择和协议的设置可通过SPI接口进行设置电流消耗极低:工作在发射模式下发.原创 2021-04-01 11:27:18 · 3739 阅读 · 0 评论 -
单片机多级菜单的简单实现
单片机多级菜单的简单实现多级菜单的思路最近想把stm32上的oled显示屏做的好看一些,于是动手写了写一个多级菜单,思路很简单,每个页面用单独的函数封装好,每个功能也是用单独的函数进行封装,用了3个按键,两个切换键,一个确定键。首先来看看用啥判断页面的(这偷个懒,希望没人打我)//页面标志位uint8_t s1 = 0; //主页面功能号uint8_t s2 = 0; //主次页面判断标志位uint16_t s3 = 1; //次页面功能号主页面的显示函数,这是个很枯燥的一原创 2021-03-25 19:21:17 · 6643 阅读 · 4 评论