自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (71)
  • 收藏
  • 关注

原创 git学习

常用命令查看当前文件夹下的文件与文件夹:ls ll进入当前文件夹下的user文件夹:cd ./user查看当前文件夹下的test.txt文件:cat ./test.txt返回上一级目录:cd ..当前目录:cd .退出vim编辑器::wq本地库的创建命令:git init签名需要用户名和邮箱,用于区分开发人员,类似与身份证。签名类别:项目级别仅在当前项目下生效命令:git config user.name TestUsergit config user.email Tes

2022-09-17 18:59:18 876 1

原创 【STM32】HAL库-以太网外设-LAN8720A-LWIP-无操作系统

LAN8720A使用RMII接口与STM32的ETH外设进行数据通信STM32使用SMI接口读/写LAN8720A的寄存器LAN8720A由外部25MHz晶振提供时钟,LED2/NINTSEL引脚配置为下拉,故PHY(LAN8720A)提供50MHz时钟给RMII的NINT/REFCLKO(此时引脚NINT/REFCLKO仅作为时钟输出,中断功能不可用),RMII需要50MHz时钟LED1/REGOFF配置为下拉,使用LAN8720A内部稳压器上电后MODE引脚的电平会被锁存,用于设置PHY的工作模式,

2022-09-14 00:12:37 6133 5

原创 【STM32】标准库-以太网外设-LAN8720A-LWIP-无操作系统

函数是一个必须被无限循环调用的 LwIP 支持函数,一般在 main 函数的无限循环中调用,主要功能是为 LwIP 各个模块提供时间并查询链路状态,该函数有一个形参,用于指示当前时间,单位为 ms。

2022-09-12 14:32:27 3936 1

原创 【STM32】标准库-SDIO-SDHC

定义了检测 SD 卡是否正确插入的宏,ST 官方的 SD 卡驱动是以一个输入引脚电平判断 SD卡是否正确插入,这里我们不使用,把引脚定义去掉 (不然编译出错),保留 SD_PRESENT和 SD_NOT_PRESENT 两个宏定义/**/* start: 自定义配置 */ // /*!// } /* end: 自定义配置 */ return status;}是否启动DMA传输数据。

2022-09-03 14:30:20 586

原创 SD卡笔记

SD I/O 卡本身不是用于存储的卡,它是指利用 SDIO 传输协议的一种外设。比如 Wi-Fi Card,它主要是提供Wi-Fi 功能,有些 Wi-Fi 模块是使用串口或者 SPI 接口进行通信的,但 Wi-Fi SDIO Card 是使用SDIO 接口进行通信的。即使目前 SD 协议提供的 SD 卡规范版本最新是 4.01 版本,stm32f4xx 系列控制器,即只支持标准容量 SD 和高容量 SDHC 标准卡,不支持超大容量SDXC 标准卡,所以可以支持的最高卡容量是 32GB。...

2022-08-27 15:56:20 1959

原创 【STM32】标准库-LTDC-DMA2D

STM32F429 系列芯片内部自带一个 LTDC 液晶控制器,使用 SDRAM 的部分空间作为显存,可直接控制液晶面板,无需额外增加液晶控制器芯片。STM32 的 LTDC 液晶控制器最高支持 800x600分辨率的屏幕;可支持多种颜色格式,包括 RGB888、RGB565、ARGB8888 和 ARGB1555 等 (其中的“A”是指透明像素);支持 2 层显示数据混合,利用这个特性,可高效地做出背景和前景分离的显示效果,如以视频为背景,在前景显示弹幕。LTDC 外设使用 3 种时钟信号,包括 AH

2022-08-24 23:02:54 1701 1

原创 【STM32】工程配置,存储空间分别情况,常用操作

为堆顶地址,也可以自己计算堆顶地址。,该文件中有详细的向量表分布情况。在main.c定义两个全局变量。在Hex文件中找到该地址。(先存的是低字节的数据)生成的Hex中应要有。在Hex文件中找数据。......

2022-08-13 15:46:12 1729

原创 【STM32】标准库-FMC-SDRAM

STM32F429 使用 FMC 外设来管理扩展的存储器,FMC 是 Flexible Memory Controller 的缩写,译为可变存储控制器。它可以用于驱动包括 SRAM、类型的存储器FSMC 控制器 (Flexible Static MemoryController),译为可变静态存储控制器,所以它们不能驱动 SDRAM 这样的动态存储器,因为驱动 SDRAM 时需要定时刷新,STM32F429 的 FMC 外设才支持该功能,且只支持普通的 SDRAM,不支持 DDR类型的 SDRAM。...

2022-08-13 12:00:56 1248

原创 SDRAM笔记

SRAM :静态RAM,不用刷新,速度可以非常快,像CPU内部的cache,都是静态RAM,缺点是一个内存单元需要的晶体管数量多,因而价格昂贵,容量不大。DRAM:动态RAM,需要刷新,容量大。SDRAM:同步动态RAM,需要刷新,速度较快,容量大。DDR SDRAM:双通道同步动态RAM,需要刷新,速度快,容量大。........................

2022-08-07 20:16:48 3133

原创 【STM32】标准库-看门狗

此器件具有两个嵌入式看门狗外设,具有安全性高、定时准确及使用灵活的优点。两个看门狗外设(独立和窗口)均可用于检测并解决由软件错误导致的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时 间精度要求较低的场合当通过对关键字寄存器 (IWDG_KR) 写入值 0xCCCC 启动独立看门狗时,计数器开始从复位 值 0xFFF 递减计数。...

2022-08-06 22:21:19 485

原创 【STM32】标准库-读写内部Flash及用户选项字节

默认情况下,FLASH_OPTCR 寄存器中的第 0 位 OPTLOCK 值为 1,它表示选项字节被上锁,需要解锁后才能进行修改,当寄存器的值设置完成后,对 FLASH_OPTCR 寄存器中的第 1 位 OPTSTRT值设置为 1,硬件就会擦除选项字节扇区的内容,并把 FLASH_OPTCR/1 寄存器中包含的值写入到选项字节。修改选项字节的内容可修改各种配置,但是,当应用程序运行时,无法直接通过选项字节的地址改写它们的内容,例如,接使用指针操作地址 0x1FFFC0000 的修改是无效的。........

2022-08-04 22:36:39 3628

原创 【STM32】标准库-自定义BootLoader

bootloader其实就是一段启动程序,它在芯片启动的时候最先被执行,可以用来做一些硬件的初始化或者用作固件热更新,当初始化完成之后跳转到对应的应用程序中去。bootloader程序需要通过下载器烧写到芯片中,而APP则可以通过有线方式的UART、IIC、USB、SPI等总线来通过bootloader来更新,视所设计的bootloader程序而定。另外,对于无线方式热更新APP,一般是用WiFi、bluetooth通过UART透传的方式烧写芯片APP程序。......

2022-07-31 18:25:26 2132

原创 【STM32】HAL库-DAC

数字/模拟转换模块(DAC)是12位数字输入,电压输出的数字/模拟转换器。DAC可以配置为8位或12位模式,也可以与DMA控制器配合使用。为了避免寄生的干扰和额外的功耗,引脚PA4或者PA5在之前应当设置成模拟输入(AIN)。将DAC_CR寄存器的ENx位置’1’即可打开对DAC通道x的供电。经过一段启动时间tWAKEUP,DAC通道x即被使能。注意: ENx位只会使能DAC通道x的模拟部分,即便该位被置’0’,DAC通道x的数字部分仍然工作。DAC集成了2个输出缓存,可以用来减少输出阻抗,无需外

2022-06-08 11:38:43 1890

原创 【STM32】HAL库-SPI

引脚NSS引脚管理配置为从设备在从模式下,SCK引脚用于接收从主设备来的串行时钟。SPI_CR1寄存器中BR[2:0]的设置不影响数据传输速率。建议在主设备发送时钟之前使能SPI从设备,否则可能会发生意外的数据传输配置步骤配置为主设备在主配置时,在SCK脚产生串行时钟。配置步骤状态标志关闭SPI当通讯结束,可以通过关闭SPI模块来终止通讯。清除SPE位即可关闭SPI。在某些配置下,如果再传输还未完成时,就关闭SPI模块并进入停机模式,则可能导致当前的传输被破坏,而且BS.

2022-06-07 21:09:52 7296 1

原创 【STM32】HAL库-ADC

12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz通过设置ADC_CR2寄存器的ADON位可给ADC上电。当第一次设置ADON位时,它将ADC从断电状态下唤醒。ADC上电延迟一段时间后(tSTAB),再次设置ADON位时开始进行转换。通过清除AD

2022-06-03 16:10:25 8800 1

原创 【STM32】HAL库-CRC校验

CRC循环冗余校验(CRC)计算单元是根据固定的生成多项式得到任一32位全字的CRC计算结果。使用CRC-32(以太网)多项式:0x4C11DB7CRC计算单元含有1个32位数据寄存器:对该寄存器进行写操作时,作为输入寄存器,可以输入要进行CRC计算的新数据。对该寄存器进行读操作时,返回上一次CRC计算的结果。每一次写入数据寄存器,其计算结果是前一次CRC计算结果和新计算结果的组合(对整个32位字进行CRC计算,而不是逐字节地计算)。在CRC计算期间会暂停CPU的写操作,因此可以对寄存器

2022-05-31 13:54:57 4949 3

原创 【STM32】HAL库-通用定时器

简介通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。每个定时器都是完全独立的,没有互相共享任何资源。时基单元软件可以读写计数器CNT、自动重装载寄存器ARR和预分频寄存器PSC,即使计数器运行时也可以操作。当前计数值寄存器CNT向上计数,可随时修改自动重装载寄存器ARR可

2022-05-18 13:21:49 10594 1

原创 【STM32】HAL库-基本定时器

简介基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。它们可以作为通用定时器提供时间基准,特别地可以为数模转换器(DAC)提供时钟。实际上,它们在芯片内部直接连接到DAC并通过触发输出直接驱动DAC。这2个定时器是互相独立的,不共享任何资源。寄存器软件可以读写计数器CNT、自动重装载寄存器ARR和预分频寄存器PSC,即使计数器运行时也可以操作。当前计数值寄存器CNT向上计数,可随时修改自动重装载寄存器ARR可随时修改,具有影子寄存器,根据TIM

2022-05-15 22:12:27 1149

原创 【STM32】HAL库-RTC实时时钟

简介实时时钟是一个独立的定时器RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后,RTC的设置和时间维持不变系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操作。执行以下操作将使能对后备寄存器和RTC的访问:设置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能电源和后备接口时钟设置寄存器PWR_CR的DBP位,使能对后备寄存器和RTC的访问。时钟源通过设置备份域控制寄存器(RCC_BDCR)里的R

2022-05-14 15:09:44 6291

原创 【STM32】HAL库-DMA

DMA直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。DMA控制器和Cortex™-M3核心共享系统数据总线,执行直接存储器数据传输。当CPU和DMA同时访问相同的目标(RAM或外设)时,DMA请求会暂停CPU访问系统总线达若干个周期,总线仲裁器执行循环调度,以保证CPU至少可以得到一半的系统总线(存储器或外设)带宽。DMA配置过程DMA的数据对齐一句话,如果目标的

2022-05-13 15:02:00 2894

原创 【STM32】HAL库-串口USART

USART简介通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。一个波特率寄存器(USART_BRR),12位的整数和4位小数任何USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)当发送器被激活并且不发送数据时,TX引脚处于高电平在起始位期间,TX脚处于低电平,在停止位期间处于高电平。发送和接收由一共用的波特率发生器驱动,当发送器和接收器的使

2022-05-11 16:27:28 13728 1

原创 【STM32】HAL库-备份寄存器(BKP)

简介备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。执行以下操作可以使能对备份寄存器和RTC的访问。通过设置寄存器RCC_APB1ENR的PWREN和BKPEN位来打开电源和后备接口的时钟电源控制寄存器(PWR_CR)的DBP位来使能

2022-05-10 16:58:59 4437

原创 【STM32】HAL库-嵌套向量中断控制器NVIC

中断与异常嵌套向量中断控制器,简称为NVIC,其支持为数众多的系统异常和外部中断。Cortex-M3支持256个中断。中断/异常类型表如下编号为 1-15 的称为系统异常(注意:没有编号为 0 的异常),大于等于 16 的称为(外部)中断。除了个别异常的优先级被定死外,其它中断/异常的优先级都是可编程的外部中断表如下优先级在 CM3 中,优先级对于异常来说很关键的,它会决定一个异常是否能被掩蔽,以及在未掩蔽的情况下何时可以响应。优先级的数值越小,则优先级越高。CM3 支持中断

2022-05-09 17:31:10 2015

原创 【STM32】HAL库-系统滴答定时器SysTick

SysTick定时器被捆绑在NVIC中,是一个简单的定时器,对于CM3、CM4内核芯片,都有Systick定时器。Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。系统滴答定时器有4个寄存器CTRLSysTick控制及状态寄存器(地址:0xE000_E010)LOADSysTick重装载数值寄存器(地址:

2022-05-08 22:20:58 11624 2

原创 【STM32】HAL库-电源控制(低功耗模式)

电源框图ADC单独供电为了提高转换的精确度,ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺干扰。ADC的电源引脚为VDDA独立的电源地VSSA电池备份区域当VDD断电时,可以保存备份寄存器的内容和维持RTC的功能。VBAT为RTC、LSE(低速外部时钟)振荡器、备份寄存器和PC13至PC15供电。当备份区域由VDD(内部模拟开关连到VDD)供电时,下述功能可用:PC14和PC15可以用于GPIO或LSE引脚PC13可以作为通用I/O口、TAMPER引脚、RTC

2022-05-08 17:09:32 2978

原创 【STM32】HAL库-外部中断

外部中断框图产生中断硬件触发外部中断配置中断屏蔽寄存器中的屏蔽位,允许该外部中断请求选择外部中断的触发边沿,上升沿/下降沿/两者都检测在NVIC中设置外部中断的优先级,并使能该中断在中断发生后,在中断服务函数中,清除请求挂起寄存器中的对应位(写1清除)STM32参考手册中的描述:要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置2个触发寄存器,同时在中断屏蔽寄存器的相应位写’1’允许中断请求。当外部中断线上发生了期待的边沿时,将产生一个中断请求,对应的挂起位也随之被置’1’。

2022-05-07 17:41:52 7764

原创 【STM32】HAL库-GPIO及位段

GPIO模式输入浮空输入上拉输入下拉模拟输入推挽输出开漏输出推挽复用输出开漏复用输出一篇介绍推挽与开漏输出的区别的文章 链接I/O端口位的基本结构配置表输入浮空/上拉/下拉配置输出缓冲器被禁止施密特触发输入被激活根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器对输入数据寄存器的读访问可得到I/O状态输出配置输出缓冲器被激活开漏模式:输出寄存器上的’0’激活N-MOS,而

2022-05-06 19:50:18 1018

原创 C语言实现JSON字符串解码与编码(三)源代码

申请/释放空间因为JSON对象与字符串需要在堆上申请/释放空间,故定义2个函数指针变量来存在函数地址。static void* (*JSON_malloc)(size_t _Size);//申请空间的函数指针static void (*JSON_free)(void* _Block);//释放空间的函数指针通过调用JSONInit()函数来初始化这两个函数指针/** \brief JSON初始化 * * \param JSONmalloc 申请空间函数的地址 * \param J

2022-04-26 20:31:39 2139

原创 C语言实现JSON字符串解码与编码(二)头文件介绍

注意点/** 存储字符串的指针的值为NULL则代表字符串为空* 存储对象的指针的值为NULL则代表对象为空* 数组的第一个元素的值为NULL则代表数组为空*/支持的数据类型/* JSON的数据类型 */typedef enum{ JSON_TYPE_BOOL = 0,//布尔类型的枚举 JSON_BOOL_t false = -1, true = 1, null = 2 JSON_TYPE_CHAR, JSON_TYPE_SHORT, JSON_TYPE_INT, JSON_

2022-04-26 17:07:25 1637

原创 C语言实现JSON字符串解码与编码(一)大致思路

JSON字符串的解码假如有这么一个JSON字符串,其有字符串,实数,对象类型。学生信息的JSON字符串{ "id": "0011223344",//学号 "name": "张三",//姓名 "phone": "111-22223333",//手机号 "addr": "天安门广场",//住址 "grade": "小学四年级",//年级 "score": {//分数对象 "math": 99.5,//数学得分 "chinese": 85.5, "english": 86,

2022-04-26 16:46:14 2800

原创 【C语言】C语言实现双链表

头文件#pragma once#ifndef _L_LIST_H#define _L_LIST_H/* 需要用到的C库文件 */#include <stdlib.h>#include <stdio.h>/* 双向链表节点结构体声明 */typedef struct node{ struct node* nextNode, * prevNode; //指向上一个节点和下一个节点的地址 void* nodeData; //指向节点的数据地址}no

2022-04-18 13:36:03 764

原创 TCP/IP协议学习笔记(五)Windows下多线程多客户端的TCP服务端的实现

服务端注意下多线程下共享内存,还有printf的使用,需要线程之间同步,同一时间只能有一个线程使用。#include <stdio.h>#include <windows.h>#include <process.h>#pragma comment(lib,"ws2_32.lib")/* 服务端相关配置 */#define SERVER_IP "127.0.0.1" //服务端IPV4地址#define SERVER_PORT 1234 //服务端

2022-04-16 16:35:42 4321

原创 【C语言】Windows下的多线程编程-信号量

信号量主要将用到四个函数。下面是这些函数的原型和使用说明。CreateMutex创建互斥量/** \brief 创建一个信号量 * * \param lpSemaphoreAttributes 表示安全控制,一般直接传入NULL。 * \param lInitialCount 设置信号量的初始计数。可设置零到lMaximumCount之间的一个值 * \param lMaximumCount 设置信号量的最大计数 * \param lpName 指向信号量对象名的指针 *

2022-04-15 17:07:01 1751 1

原创 【C语言】Windows下的多线程编程-互斥量

互斥量Mutex主要将用到四个函数。下面是这些函数的原型和使用说明。CreateMutex创建互斥量/** \brief 创建一个互斥量(MUTEX) * * \param lpMutexAttributes 表示安全控制,一般直接传入NULL。 * \param bInitialOwner 用来确定互斥量的初始拥有者。如果传入TRUE表示互斥量对象内部会记录创建它的线程的线程ID号并将递归计数设置为1,由于该线程ID非零,所以互斥量处于未触发状态。 * 如果传入FALSE,那

2022-04-15 16:40:53 1728

原创 【C语言】Windows下的多线程编程-事件

事件Event上是个内核对象,它的使用非常方便。下面列出一些常用的函数。CreateEvent创建事件/** \brief 创建事件 * * \param lpEventAttributes 表示安全控制,一般直接传入NULL * \param bManualReset 确定事件是手动置位还是自动置位,传入TRUE表示手动置位,传入FALSE表示自动置位。 * 如果为自动置位,则对该事件调用WaitForSingleObject()后会自动调用ResetEvent()使事件变成未

2022-04-15 15:25:49 605

原创 【C语言】Windows下的多线程编程-关键段(临界区)

临界区(关键段):线程同步方式,用于限制“公用代码”一次只能被一个线程使用关键段定义typedef struct _RTL_CRITICAL_SECTION { PRTL_CRITICAL_SECTION_DEBUG DebugInfo;//调试用 // // The following three fields control entering and exiting the critical // section for the resource //

2022-04-14 22:03:11 940

原创 【C语言】Windows下的多线程编程-原子操作

在计算机中,原子操作又称为原语,操作系统保证:原子操作是不可分割的,在执行完毕之前不会被任何其它任务或事件中断。下面列出一些常用的Interlocked系列函数:InterlockedIncrement自增/** \brief 实现数的原子性自减 * * \param lpAddend 指向要递增的变量的指针 * \return 返回自增后的变量值 * */LONG InterlockedIncrement(LPLONG lpAddend);在C中相当于int i = 0;

2022-04-14 19:55:10 932

原创 【C语言】Windows下的多线程编程-创建线程

_beginthread和_beginthreadex是Windows下创建线程的函数。结束线程函数_endthread和_endthreadex。主线程结束了,子线程也会结束。_beginthread函数原型/** \brief 创建一个线程 * * \param start_address 新线程的起始地址 ,指向新线程调用的函数的起始地址 * \param stack_size 新线程的堆栈大小,可以为0 * \param arglist 传递给线程的参数列表,无参数时为

2022-04-14 17:05:45 6107

原创 TCP/IP协议学习笔记(四)Window下socket编程(二)UDP

在socket中使用域名域名仅仅是IP地址的一个助记符,目的是方便记忆,通过域名并不能找到目标计算机,通信之前必须要将域名转换成IP地址。gethostbyname() 函数可以完成这种转换,它的原型为:/** \brief 解析域名 * * \param hostname 为主机名,也就是域名。 * \return 指向 hostent 结构体的指针 * */struct hostent* gethostbyname(const char* hostname)其中struc

2022-04-12 20:02:23 2894

原创 TCP/IP协议学习笔记(三)Window下socket编程(一)TCP

Visual Studio实现socket通信DLL的加载使用#pragma命令,在编译时加载:#pragma comment (lib, "ws2_32.lib") //加载 ws2_32.dll使用DLL之前,还需要调用 WSAStartup() 函数进行初始化,以指明 WinSock 规范的版本,它的原型为:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);wVersionRequested 为 WinSock 规范

2022-04-10 19:39:07 3276

STM32-HAL库-FREERTOS-Event

环境 keil-mdk:5.27 STM32cubemx:6.6.1 HAL库:1.27.1 MCU:STM32F429IGT6 事件demo

2023-02-12

STM32-HAL库-FREERTOS-Mutex

环境 keil-mdk:5.27 STM32cubemx:6.6.1 HAL库:1.27.1 MCU:STM32F429IGT6 互斥量demo

2023-02-12

STM32-HAL库-FREERTOS-Semaphore

环境 keil-mdk:5.27 STM32cubemx:6.6.1 HAL库:1.27.1 MCU:STM32F429IGT6 信号量demo

2023-02-12

STM32-HAL库-FREERTOS-Task-Queue

环境 keil-mdk:5.27 STM32cubemx:6.6.1 HAL库:1.27.1 MCU:STM32F429IGT6 任务、线程管理、消息对立demo

2023-02-12

STM32-HAL库-LWIP-DHCP-DNS

环境 keil-mdk:5.27 STM32cubemx:6.6.1 HAL库:1.27.1 MCU:STM32F429IGT6

2023-02-04

STM32-HAL库-LWIP-DHCP

环境 keil-mdk:5.27 STM32cubemx:6.6.1 HAL库:1.27.1 MCU:STM32F429IGT6

2023-02-04

STM32-HAL库-LWIP-TCP客户端与服务端

环境 keil-mdk:5.27 STM32cubemx:6.6.1 HAL库:1.27.1 MCU:STM32F429IGT6

2023-02-04

【STM32】HAL库-W25Q256

环境 keil-mdk:5.27 STM32cubemx:6.6.1 HAL库:1.27.1 MCU:STM32F429IGT6

2022-09-18

C语言实现环形数组(环形缓冲区)

该环形数组实现了覆写机制,即当环形数组容不下需要写入的数组时,则会覆盖最久的数据。

2022-09-15

【STM32】HAL库-以太网外设-LAN8720A-LWIP-无操作系统-PING

- KEIL:MDK_ARM_5.27 - MCU:STM32F429IGT6 - PHY_IC:LAN8720A - LWIP:LWIP2.1.2 - STM32CUBEMX:6.6.1 - HAL:V1.27.1 LAN8720A使用RMII接口与STM32的ETH外设进行数据通信 STM32使用SMI接口读/写LAN8720A的寄存器

2022-09-14

【STM32】标准库-以太网外设-无操作系统 LwIP 移植-PING-TCP-CLIENT

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 以太网通信实验:无操作系统 LwIP 移植 LPHY芯片为LAN8720A 开发板IP为192.168.1.122 PC的IP设置为192.168.1.100 服务器IP192.168.1.10端口为6000

2022-09-12

【STM32】标准库-自定义BOOT_软件复位+标志位的方式

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 BOOTloader程序起始地址`0x0800 0000`分配大小为`0xA000`,40KB, APP程序起始地址`0x0800 A000`分配的大小为`0xF6000`,984KB。 注意按照扇区对齐(比如4KB一个扇区) 通过软件复位 + 一个标志位的方式来实现BOOT 注意点:上电应检查标志位,不能初始化任何外设,根据该标志位来决定是否进入APP 通过软件复位给 APP 一个干净的系统 这里的标志位存在RTC备份寄存器0中,占用4个字节

2022-09-04

【STM32】标准库-SDIO-SDHCkk卡读写

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13

2022-09-03

【STM32】标准库-LTDC-DMA2D-绘制 24X24 ASCII 字符与GN2312汉字

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 内含1-STM32F4xx中文参考手册2(DMA2D+LTDC+SAI+FMC) LTCD + DMA2D LTDC仅使用一个图层,如果要使用双图层则使用DMA2D的前景和背景来实现 仅存储的有1帧图像如果要绘制包含透明通道的图像,请调用LCD_Mix_Copy函数 绘制ASCII字符(TIME_NEW_ROMAN)和GB2312汉字(宋体) 点阵大小为:24 * 24 的字模库数据 阴码,高位在前,逐行式 LCD显示一个字模需要占用的显存大小为:24 * 24 * LCD_PIXEL_BYTES 字节 ASCII存储在FLash的 宏 FONT_ASCII_24x24_FLASH_ADDR地址上 GB2312存储在FLash的 宏 FONT_GB2312_24x24_FLASH_ADDR地址上

2022-08-24

【STM32】标准库-LTDC-DMA2D-绘制 16X24 ASCII字符

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 内含1-STM32F4xx中文参考手册2(DMA2D+LTDC+SAI+FMC) LTCD + DMA2D LTDC仅使用一个图层,如果要使用双图层则使用DMA2D的前景和背景来实现 仅存储的有1帧图像 如果要绘制包含透明通道的图像,请调用LCD_Mix_Copy函数 绘制ASCII字符 点阵大小为:16 * 24 的ASCII字模库数据,宋体 阴码,高位在前,逐行式 即一个字模数据需要用 16 * 24 / 8 = 48 字节,共95个字模,占用 48 * 95 = 4560 字节,2个Flash的扇区 LCD显示一个字模需要占用的显存大小为:16 * 24 * LCD_PIXEL_BYTES 字节 采用的字模为宋体 16X24,存储在FLash的 宏 FONT_ASCII_16x24_FLASH_ADDR 地址上

2022-08-21

【STM32】标准库-LTDC-DMA2D-填充与绘制图像

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 内含1-STM32F4xx中文参考手册2(DMA2D+LTDC+SAI+FMC) LTCD + DMA2D LTDC仅使用一个图层,如果要使用双图层则使用DMA2D的前景和背景来实现 仅存储的有1帧图像 如果要绘制包含透明通道的图像,请调用LCD_Mix_Copy函数

2022-08-21

【STM32】标准库-FMC-SDRAM

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 SDRAM读写测试工程,内容包含SDRAM芯片手册 突发读写是以数据线的位宽为单位的,比如当前位宽为16Bit,突发读写是2,则读写的长度是4个字节,也可以说突发长度是读写次数

2022-08-13

【STM32】标准库-窗口看门狗

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 窗口看门狗的时钟由(PCLK1 div 4096)提供,PCLK1 = 45MHz 预分频为8,故WWDG计一个数时间为 0.7ms ≈ 1ms 只能在窗口内喂狗,否则会产生复位 WWDG的CNT为7位寄存器,最大为0x7F,窗口下限值固定为0x40,上限值可以自定义(最大值为0x7F) 本次监控的程序执行时间假定为30ms,将窗口上限值设置为0x40 + 50,CNT寄存器也设置为0x40 + 50 30 / 0.7 = 42 该程序最少需要计42个数 监控的程序为Delay(30),在while(1)循环中

2022-08-06

【STM32】标准库-独立看门狗

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 独立看门狗的预分频器为32,独立看门狗由LSI(32KHz)提供时钟, 把重装载寄存器的值放到计数器中,喂狗超时时间为1s Key1来喂狗,如果系统从独立看门狗复位则使用串口输出信息。

2022-08-06

【STM32】标准库-读写内部Flash与芯片访问级别设置

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 开启FLash双块存储模式,双BANK 读写扇区13的4个字节。

2022-08-04

【STM32】标准库-自定义BOOT

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 BOOTloader程序起始地址`0x0800 0000`分配大小为`0xA000`,40KB, APP程序起始地址`0x0800 A000`分配的大小为`0xF6000`,984KB。 注意按照扇区对齐(比如4KB一个扇区)

2022-07-31

【STM32】标准库-I2C-DMA收发数据-读写AT24C02-仿printf和scanf输入输出

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 KEIL5下载配置有FLASH与SRAM 收发共用一个缓冲区 I2C使用DMA与AT24C02通信,Tx中,利用DMA传输数据,但是起始位,设备地址,读写地址采用的是阻塞式发送,数据则是采用DMA传输;注意点:采用DMA发送应该等到BTF(发送寄存器空,移位寄存器也为空)事件后设置停止位,不可以在DMA传输完成中断中设置停止位,因为此时正在发送最后一个字节,故开启BTF中断(I2C_EV),在该中断服务函数中发送停止位并关闭I2C的DMA传输使能。 Rx中,利用DMA传输数据,但是起始位,设备地址,AT24C02写入地址采用的是阻塞式发送,数据则是采用DMA传输;注意点:在DMA传输完成中断中发送停止位,并关闭I2C的DMA传输使能,I2C主接收,写读转换中再次发送起始位前,第一次发送设备地址字节后,应检测BTF 仿printf写入发送缓冲区前,应检查上一次通信是否结束

2022-07-01

【STM32】标准库-SPI-DMA收发数据-读写Flash(W25Q256JV)-仿printf和scanf输入输出

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 KEIL5下载配置有FLASH与SRAM 用SPI5与Flash芯片通信(W25Q256JV),使用了DMA进行收发数据,SPI是同步通信,同时收发数据(其实仅与发TX同步,作为主器件,Tx产生波特率时钟SCK信号) 利用可变参数宏实现printf与scanf 定义了Flash输入输出结构体,利用了共用体 发送与接收缓冲区大小均为一个扇区大小4096B NSS(CS)采用软件控制,因为Flash芯片每发送玩一个指令都要把CS拉高。 注意点:因为TX产生SCK时钟,故需要TX的DMA优先级要比RX的优先级低,本次TX和RX的DMA使用的是一个DMA(DMA2),因为当收发一个数据后,TX和RX的DMA出现仲裁,TX需要发下一个数据,RX需要接收当前数据,为了防止一直发数据,故RX的DMA优先级需要比TX的高开启RX的DMA传输完成中断,在该中断中将CS拉高,结束通讯。

2022-06-29

【STM32】标准库-RTC-周期性唤醒

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 KEIL5下载配置有FLASH与SRAM 使用RTC实时时钟,可以使用串口接收来修改RTC的值(在调试模式下) RTC使用LSE(32.678KHz) RTC使用BCD码,配置与输出的时候需要使用16进制 周期性唤醒,需要使用外部中断线22,外部中断线22和RTC的WUTF标志,这两个标志控制RTC_WKUP_IRQn中断,系统复位后是不会触发该中断的,因为EXTI_PR被复位了; 系统复位后,需要重新配置外部中断线与中断优先级,开关等等(因为复位被这些寄存器复位,RTC类寄存器不会被复位影响) 在串口接收中断服务函数中,串口接收到数据则进入待机模式,外部中断触发则从待机模式下退出,从待机模式中唤醒等同于复位。 注意点:需要置位PWR 电源控制/状态寄存器 (PWR_CSR)中的EWUP才能使用PA0使得从待机模式下唤醒;进入待机模式前,需要清除WUF标志位

2022-06-26

【STM32】标准库-RTC

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 KEIL5下载配置有FLASH与SRAM 使用RTC实时时钟,可以使用串口接收来修改RTC的值(在调试模式下) RTC使用LSE(32.678KHz) RTC使用BCD码,配置与输出的时候需要使用16进制 在串口接收中断服务函数中,串口接收到数据则进入待机模式,外部中断触发则从待机模式下退出,从待机模式中唤醒等同于复位。 注意点:需要置位PWR 电源控制/状态寄存器 (PWR_CSR)中的EWUP才能使用PA0使得从待机模式下唤醒;进入待机模式前,需要清除WUF标志位

2022-06-26

【STM32】标准库-待机模式

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 KEIL5下载配置有FLASH与SRAM 在串口接收中断服务函数中,串口接收到数据则进入待机模式,外部中断触发则从待机模式下退出,从待机模式中唤醒等同于复位。 注意点:需要置位PWR 电源控制/状态寄存器 (PWR_CSR)中的EWUP才能使用PA0使得从待机模式下唤醒;进入待机模式前,需要清除WUF标志位

2022-06-25

【STM32】标准库-停止模式

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 KEIL5下载配置有FLASH与SRAM 在串口接收中断服务函数中,串口接收到数据则进入停止模式,外部中断触发则从停止模式下退出,从停止模式中唤醒需要重新配置时钟,调压器工作在正常模式

2022-06-25

【STM32】标准库-睡眠模式

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 KEIL5下载配置有FLASH与SRAM 在串口接收中断服务函数中,串口接收到数据则进入睡眠模式,外部中断触发则从睡眠模式下退出

2022-06-25

【STM32】标准库-独立ADC-外部触发-DMA传输-温度通道测量

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 KEIL5下载配置有FLASH与SRAM ADC1温度测量,使用DMA传输,采用外部触发ADC转换,触发源为TIM3的TRGO事件,TIM3的TRGO事件来源于其更新事件,TIM3每200ms更新一次,也就是ADC每200ms采样一次, 使用ADC1的规则通道,采样的规则通道数为1,序列为 通道18(Temp) 开启DMA的传输完成中断,在中断服务函数中将ADC的数据输出 注意点:如果需要ADC转换完成中断,最好使用DMA的传输完成中断代替

2022-06-24

【STM32】标准库-多重ADC-外部触发-DMA传输-多通道-交替触发

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 KEIL5下载配置有FLASH与SRAM ADC1和ADC2规则同步模式,使用通道4和通道6,PA4和PA6(配置为模拟模式),开启扫描模式,使用DMA传输,采用外部触发ADC转换,触发源为TIM3的TRGO事件,TIM3的TRGO事件来源于其更新事件,TIM3每200ms更新一次,也就是ADC每200ms采样一次, 使用ADC1的规则通道,采样的规则通道数为2,序列为 通道4(PA4),通道6(PA6) 使用ADC2的规则通道,采样的规则通道数为2,序列为 通道4(PA4),通道6(PA6) 开启DMA的传输完成中断,在中断服务函数中将ADC的数据输出 注意点:如果需要ADC转换完成中断,最好使用DMA的传输完成中断代替

2022-06-24

【STM32】标准库-多重ADC-外部触发-DMA传输-多通道-规则同步-自动注入

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 KEIL5下载配置有FLASH与SRAM ADC1和ADC2规则同步模式,使用通道4和通道6,PA4和PA6(配置为模拟模式),开启扫描模式,使用DMA传输,采用外部触发ADC转换,触发源为TIM3的TRGO事件,TIM3的TRGO事件来源于其更新事件,TIM3每200ms更新一次,也就是ADC每200ms采样一次, 使用ADC1的规则通道和注入通道,采样的规则通道数为2,注入通道数为1,序列为 通道4(PA4),通道6(PA6),通道4 使用ADC2的规则通道和注入通道,采样的规则通道数为2,注入通道数为1,序列为 通道6(PA6),通道4(PA4),通道6 开启ADC2的注入通道转换完成中断,在中断服务函数中讲ADC的数据输出 注意点:如果需要ADC转换完成中断,最好使用DMA的传输完成中断代替

2022-06-23

【STM32】标准库-多重ADC-外部触发-DMA传输-多通道-规则同步

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 KEIL5下载配置有FLASH与SRAM ADC1和ADC2规则同步模式,使用通道4和通道6,PA4和PA6(配置为模拟模式),开启扫描模式,使用DMA传输,采用外部触发ADC转换,触发源为TIM3的TRGO事件,TIM3的TRGO事件来源于其更新事件,TIM3每200ms更新一次,也就是ADC每200ms采样一次, 使用ADC1的规则通道,采样的通道数为2,序列为 通道4(PA4),通道6(PA6) 使用ADC2的规则通道,采样的通道数为2,序列为 通道6(PA6),通道4(PA4) 在DMA的中断服务函数中,使用串口将ADC转换值输出 注意点:如果需要ADC转换完成中断,最好使用DMA的传输完成中断代替

2022-06-23

【STM32】标准库-独立ADC-外部触发-DMA传输-多通道

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 KEIL5下载配置有FLASH与SRAM ADC1独立模式,使用通道4和通道6,PA4和PA6(配置为模拟模式),开启扫描模式,使用DMA传输,采用外部触发ADC转换,触发源为TIM3的TRGO事件,TIM3的TRGO事件来源于其更新事件,TIM3每200ms更新一次,也就是ADC每200ms采样一次, 使用ADC1的规则通道,采样的通道数为2,序列为 通道4(PA4),通道6(PA6) 在DMA的中断服务函数中,使用串口将ADC转换值输出 注意点:如果需要ADC转换完成中断,最好使用DMA的传输完成中断代替

2022-06-23

【STM32】标准库-独立ADC-外部触发-DMA传输-单通道

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 KEIL5下载配置有FLASH与SRAM ADC1独立模式,使用通道4,PA4(配置为模拟模式),使用DMA传输,采用外部触发ADC转换,触发源为TIM3的TRGO事件,TIM3的TRGO事件来源于其更新事件,TIM3每200ms更新一次,也就是ADC每200ms采样一次, 使用ADC1的规则通道,采样的通道数为1,序列为 通道4(PA4) 在DMA的中断服务函数中,使用串口将ADC转换值输出 注意点:如果需要ADC转换完成中断,最好使用DMA的传输完成中断代替

2022-06-23

【STM32】标准库-通用定时器-外部时钟模式2

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0,Key2为PC13 使用通用定时器4,定时器时钟为外部时钟模式2,计数器时钟由 ETRF 信号的任意有效边沿提供 预分频器值为1,重装载ARR寄存器值为5 使能ARR寄存器缓冲功能,并且仅在上/下溢才触发更新事件 TIM4外部时钟模式2使用的ETR引脚为PE0,配置为复用模式,下拉模式 ETR为上升沿,不分频。 开启TIM4更新中断,在中断服务函数中翻转LED灯 KEIL5下载配置有FLASH与SRAM

2022-06-22

【STM32】标准库-通用定时器-PWM输出比较-呼吸灯

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 使用通用定时器3,定时器时钟频率为90MHz,预分频器值为9000 - 1,故计一个数时间为0.1ms TIM3的ARR寄存器为32位,CNT和CCRx寄存器均为32位 重装载ARR寄存器值为100,故定时器溢出时间为10ms 使能ARR寄存器缓冲功能,并且仅在上/下溢才触发更新事件 TIM3使用的引脚为PA6,配置为复用模式 OC1配置为PWM1模式,CCR1寄存器初始值为5 用杜邦线连接PH11与PA6 PH11不能进行初始化,否则不会出现呼吸灯的效果 KEIL5下载配置有FLASH与SRAM

2022-06-22

【STM32】标准库-通用定时器-PWM输入捕获

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 Key1为PA0 使用通用定时器2,定时器时钟频率为90MHz,预分频器值为9000 - 1,故计一个数时间为0.1ms TIM2的ARR寄存器为32位,CNT和CCRx寄存器均为32位 重装载ARR寄存器值为0xFFFF FFFF,故定时器溢出时间为0xFFFFFFFFms 使能ARR寄存器缓冲功能,并且仅在上/下溢才触发更新事件 TIM2使用的引脚为PA5,配置为复用模式 IC1上升沿捕获,IC2下降沿捕获,开启更新与IC1捕获中断 用杜邦线连接PA0与PA5 KEIL5下载配置有FLASH与SRAM

2022-06-22

【STM32】标准库-基本定时器

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别为PH10,PH11,PH12 使用基本定时器6,定时器时钟频率为90MHz,预分频器值为9000 - 1,故计一个数时间为0.1ms 重装载ARR寄存器值为10000,故定时器溢出时间为1000ms 使能ARR寄存器缓冲功能,并且仅在上/下溢才触发更新事件 KEIL5下载配置有FLASH与SRAM

2022-06-20

【STM32】标准库-USART-DMA收发数据-串口空闲-仿printf发送-双缓冲

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别位PH10,PH11,PH12 USART1,波特率115200,无校验位,1位停止位 PA9->TX,PA10->RX,开启TC和IDLE中断 仿printf发送,DMA式收发数据 串口空闲中断触发后,在中断服务函数中重新填写DMA的剩余传输数据数量寄存器的值,保证下一次接收数据是从串口接收缓冲区的第一个字节接收,并更改DMA的目标缓冲区 配备了CRC校验,使用CRC-32(以太网)多项式:0x4C11DB7 KEIL5下载配置有FLASH与SRAM

2022-06-20

【STM32】标准库-USART-DMA收发数据-串口空闲-仿printf发送

采用STM32F429IGT6单片机,KeilMDK5.32版本 使用SysTick系统滴答定时器进行延时 LED_R、LED_G、LED_B分别位PH10,PH11,PH12 USART1,波特率115200,无校验位,1位停止位 PA9->TX,PA10->RX,开启TC和IDLE中断 仿printf发送,DMA式收发数据 串口空闲中断触发后,在中断服务函数中重新填写DMA的剩余传输数据数量寄存器的值,保证下一次接收数据是从串口接收缓冲区的第一个字节接收 配备了CRC校验,使用CRC-32(以太网)多项式:0x4C11DB7 KEIL5下载配置有FLASH与SRAM

2022-06-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除