![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ST
文章平均质量分 94
ST MCU相关内容整理
不吃鱼的猫丿
这个作者很懒,什么都没留下…
展开
-
LWIP学习系列(三):lwip中pbuf结构体与内存管理
一、pbuf结构体相关知识整理由上一篇:LWIP学习系列(二):STM32中ETH外设的配置与LWIP的结合使用中,底层数据的传输都是经过lwip封装成pbuf的格式,然后在对pbuf进行协议层之间的传输。这一篇,就整理一下有关pbuf的相关内容与知识(1)pbuf结构体与相关函数pbuf结构体/** lwip中主要的数据包缓存结构体 */struct pbuf { /** 下一个pbuf数据包 */ struct pbuf *next; /** 指向实际数据地址的.原创 2021-01-15 10:04:41 · 2573 阅读 · 1 评论 -
Fatfs多分区的读写
目录一、需要实现多分区的原因二、Fatfs多分区的实现三、多分区的读写Fatfs版本:R0.12cFatfs下载地址:http://elm-chan.org/fsw/ff/00index_e.html一、需要实现多分区的原因 因工作项目需要,需要读写U盘启动盘,而启动盘一般最少会被划分成2个分区,一个是装放镜像的磁盘,另一个是EFI分区用于引导程序用于引导安装镜像文件。并且启动盘的分区形式主要有GPT、与MBR的分区形式,目前主流启动盘分区形式为GPT形式,但是由于当前版本..原创 2020-12-29 14:23:13 · 2695 阅读 · 4 评论 -
STM32实用应用系列:Json数据格式 与 cJSON的使用
一、Json的简介(1)Json的简介JSON(JavaScriptObject Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。(2)Json的两种结构对象:由大括号{ } 包含的 键值对(关键字 - 值){ ...原创 2020-12-17 11:33:51 · 2099 阅读 · 2 评论 -
STM32实用应用系列:串口接收不定长数据(HAL库 UART + DMA)
一、串口接收不定长数据的实现思路在串口通信中,我们很多时候是需要接收不定长的数据,并且对接收到数据放入到缓存中,等待接下来的处理。整一个流程大致如下:实现方法:串口 空闲中断; DMA接收数据:(循环模式、不使用中断)1、可以得知已经的数据长度: BuffSize - DMA.Instanc->NDTR 【进而可以通过两次数据长度相减,得到本次传输的数据长度】 2、数据处理:可以将接收到的数据从DMA缓存中存入到自定义的 队列缓存 中(队列结构体),后续要处理的时候再从...原创 2020-12-10 17:20:52 · 5428 阅读 · 0 评论 -
STM32-SPI资料整理
一、SPI的简介1、SPI物理层SPI 一般使用4条线进行通信:NSS:为片选线 MOSI: 主机数据输出、从机数据输入 MISO:主机数据输入、从机数据输出 SCK:时钟线,由主机提供时钟输出2、协议层(1)SPI基本通讯时序(2)起始信号与停止信号开始信号:NSS 由 高变低 停止信号:NSS 由 低变高(3)数据有效性SPI 使用 SCK线进行数据同步,MOSI与MISO在SCK的每个时钟周期传输一位数据、且数据的 输入 与 输出 是同步进行的 进行数原创 2020-12-08 11:30:20 · 671 阅读 · 0 评论 -
STM32-I2C资料整理
一、I2C的简介I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、 CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。 I2C是半双工通信 I2C只有两根双向通信线: 一根是时钟线SCL, 一根是数据线SDA I2C总线通过上拉电阻接电源,当总线空闲的时候,两根线均为高电平。各器件之间的SCL与SDA 都是 “线与” 关系二、I2C的时序1、数原创 2020-11-17 20:16:13 · 1477 阅读 · 1 评论 -
STM32按键状态机的实现
目录一、按键状态机的作用二、按键状态机的实现1、按键状态机的宏定义2、按键状态机的枚举与相关结构体3、按键状态机的函数实现一、按键状态机的作用一般的按键状态机一般都具有以下功能:能够判断哪个按键按下 能够判断按键是长按或者短按 能够记录对应按键按下对应的次数实现思想:首先,通过定时器或者查询方式等周期性查询按键状态机的状态 接着在按键状态机中,需要获取得到对应按下的按键,然后通过对按键的前后状态进行对比,如果没有改变,则增加按键时间。如果按键松开,则对按键结构体进原创 2020-11-13 15:40:00 · 3867 阅读 · 2 评论 -
STM32-USB:USB复合设备使用时的一些注意事项
一、注意事项相关STM32 USB的内容,可以查看一下我之前写的USB系列的文章。本文只讲述一些,本人在USB项目中遇到的一些问题以及解决方案问题点1:MSC与HID设备复合之后,直接使用USBD_HID_SendReport不能直接发送的原因以及解决方法 在MSC与HID的复合设备执行初始化的时候,会执行对应 USBD_HID_Init 与 USBD_MSC_Init的初始化函数。这些个初始化函数的作用主要是为HID 与 MSC 分配对应类型的操作句柄(如:USBD_HID_Handl..原创 2020-11-11 16:26:00 · 1765 阅读 · 0 评论 -
LWIP学习系列(二):STM32中ETH外设的配置与LWIP的结合使用
一、STM32中ETH外设的配置流程(HAL库)(1)ETH大致初始化与使用流程声明 ETH_HandleTypeDef heth 的ETH外设句柄 对ETH句柄根据实际情况进行赋值、然后调用HAL_ETH_Init()来初始ETH外设(MAC,DMA, ......) 通过HAL_ETH_MspInit()来初始化ETH的底层资源: ...原创 2020-10-14 11:21:34 · 12024 阅读 · 0 评论 -
LWIP学习系列(一):OSI模型以及TCP/IP模型的整理
一、OSI模型与TCP/IP模型的对比图这张图是从网上搜来的,能够比较好的将OSI 七层模型与TCP 五层模型区别表现出来。原创 2020-10-13 21:05:55 · 472 阅读 · 0 评论 -
STM32:CCM的使用方法(GCC编译器)
一、CCMRAM的作用 CCM 全称:Core Coupled Memory 。在STM32系列中某些芯片没有CCM,具体需要查看芯片手册。(可以看对应芯片的ld文件,其中如果有对CCM的起始地址和大小的描述的话,那就是拥有CCM) CCM 仅可以由内核进行访问!所以放入CCM中的内容,是不能使用DMA进行访问的!! CCM的优点:将频繁读取的操作放到CCM,或者将中断函数放到CCM,都可以加快程序的执行速度 注意:使用CCM的时候需要查看一下对应芯片的总线架构,如果需要原创 2020-10-12 20:22:19 · 4853 阅读 · 0 评论 -
STM32中的链接器脚本文件(.ld文件)与启动文件(.s文件)的相关知识整理
一、原创 2020-10-12 15:24:35 · 12231 阅读 · 1 评论 -
lwIP配置宏整理(部分)
一、原创 2020-10-12 11:42:36 · 5475 阅读 · 5 评论 -
STM32-USB学习系列(六):USB-HID键盘的实现以及键盘报文描述符的简介
目录一、整体步骤二、USB 鼠标HID更改成键盘HID步骤1、使用STM32CubeMX生成鼠标HID模版,并且进行修改2、修改HID的接口描述符与报文描述符3、修改USBD_HID_Setup函数4、添加以及修改键盘报文描述符(注意!)三、调试过程中的一些总结四、HID 报文相关资料一、整体步骤使用STM32CubeMX生成 鼠标HID模版,并进行修改 修改HID 接口描述符,以及报文描述符 修改USBD_HID_Setup 函数 添加并且修改键盘报文描述符报原创 2020-09-16 20:31:32 · 9248 阅读 · 12 评论 -
STM32-USB学习系列(五):USB复合设备的实现(MSC + HID)
一、整体步骤二、原创 2020-09-09 15:28:29 · 10162 阅读 · 5 评论 -
STM32:en.x-cube-cryptolib ST加密库在Truestudio中的移植以及加密例程的使用
一、en.x-cube-cryptolib ST加密库下载地址二、移植步骤原创 2020-09-09 14:28:50 · 2121 阅读 · 0 评论 -
STM32:Base64加密与解密的实现
一、Base64的介绍二、Base64加密与解密的实现原创 2020-09-08 13:42:46 · 2276 阅读 · 1 评论 -
en.x-cube-cryptolib ST加密库下载与相关加解密简介
目录一、en.x-cube-cryptolib ST加密库下载地址二、加密与解密相关内容简介1、相关术语三、密码学的应用领域(加密解密的用途)1、用途2、应用领域:(1)加密:(2)哈希加密:(3)消息认证码:(4)数字签名:(5)RNG:(6)小结一、en.x-cube-cryptolib ST加密库下载地址链接:https://pan.baidu.com/s/1Eo-1i4nhqGZOahPpXQ4Aug 提取码:o97c二、加密与解...转载 2020-09-07 20:54:01 · 1483 阅读 · 1 评论 -
STM32-USB学习系列(四):USB-HID模拟鼠标功能
一、整体步骤二、原创 2020-09-04 20:05:41 · 7200 阅读 · 5 评论 -
STM32-USB学习系列(三):USB-MSC实现以SD卡为载体的U盘
一、整体步骤二、原创 2020-09-03 21:00:51 · 5503 阅读 · 2 评论 -
STM32-USB学习系列(二):USB的枚举过程与描述符相关内容
一、设备描述符二、配置描述符三、接口描述符四、端点描述符转载 2020-09-02 10:33:08 · 2849 阅读 · 0 评论 -
LwIP速度测试方法
一、工具准备原创 2020-08-26 20:35:57 · 3786 阅读 · 1 评论 -
STM32-USB学习系列(一) :USB与USB库的介绍
一、原创 2020-08-12 20:42:11 · 15042 阅读 · 0 评论 -
STemWin中显示中文与图片
一、STemWin显示图片步骤首先找到STemWin中的Software文件夹,找到BmpCvtST.exe(将图片文件转换成对应显示数组的c文件),将对应图片生成为对应的C文件 将生成对应的C文件添加到自己的工程当中,然后使用GUI_DrawBitmapEx 函数进行显示1、先将对应的图片文件生成对应的c文件打开对应图片然后点击image选项,Convert to ,Best palette(不同的调色板LCD的显示效果不同)然后保存,选择你LCDConf_F...原创 2020-08-11 20:56:37 · 1205 阅读 · 0 评论 -
STM32F4移植STemWin
一、原创 2020-08-11 20:09:50 · 3434 阅读 · 0 评论 -
HAL库使用定时器作为Systick时钟的方法
前言记录一下,在使用CubeMx生成的裸机模版移植完STemWin后,想再移植官方下载FreeRTOS的时候,遇到的一些问题。主要现象是编译没有错误,然后下载程序后,没办法运行对应程序,调试后发现进入HardFault_Handler,经过排查发现是FreeRTOS的心跳时钟与SysTick心跳有冲突。即SysTick没选择其他方式作为心跳源。一、STM32CubeMX生成模版代码中的Systick的配置1、Systick的初始化位于 HAL_Init() 中2、具体位于HAL_I.原创 2020-08-05 20:43:07 · 6527 阅读 · 0 评论 -
Truestudio链接静态库文件的方法
一、Truestudio链接静态库文件时找不到库文件的错误不能在属性 -》 C/C++ General -》 Path and Symbols -》 Libraries 添加库文件路径,添加后会报出找不到库文件的错误!二、Truestudio链接库文件的方法首先将各路径下有关库文件的路径删除 然后在C Linker -》Miscellaneous 中添加库文件的路径...原创 2020-07-31 20:34:50 · 519 阅读 · 0 评论 -
Truestudio中的printf重映射(通过串口打印数据)(HAL库版本)
转载自:https://blog.csdn.net/niu_88/article/details/86684065代码中随意位置添加:#include "stdio.h"#ifdef __GNUC__#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)PUTCHAR_PROTOTYPE{ HAL_UART_Transmit(&huart1, (uint8_t*)&ch, 1, HAL_MAX_DELAY); re转载 2020-07-30 19:45:05 · 514 阅读 · 0 评论 -
Windows中使用GCC编译STM32CubeMx生成的Makefile文件
下载ARM官方对应Cortex-M内核的GCC编译器:https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads下载windows下make工具(Linux下请忽视):https://github.com/xpack-dev-tools/windows-build-tools-xpack/releases然后添加到windows下的原创 2020-07-23 21:20:59 · 2312 阅读 · 1 评论 -
FreeRTOS消息队列、信号量、事件组、任务通知之间的区别
转载自:https://blog.csdn.net/p1279030826/article/details/103471564功能及区别列表消息队列(需要传递消息时使用)在任务与任务间、 中断和任务间传递信息,可以数据传输事件标志组(多个事件同步,不需要传递消息时使用)实现任务与任务间、 中断和任务间的同步,无数据传输。可实现一对多、多对多的同步,可选择是“逻辑或”触发还是“逻辑与”触发。即一个任务可以等待多个事件的发生。信号量(单个事件同步,不需要传递消息时使用) #二值信号量转载 2020-07-23 16:07:24 · 6699 阅读 · 0 评论 -
STM32:使用DWT测量某段程序运行时间
一、思路使用DWT进行追踪计数,在需要测试的程序段前后,设置(全局)volatile 变量读取DWT的计数值。然后将前后数值相减,就得到了这一段程序运行所需要的节拍数,然后在将节拍数除以时钟频率(若时钟频率为72M,则除以72 000 000,以此类推),就得到了这一段程序运行所需要的时间。二、DWT的初始化与使用方法1、有关DWT用作延时或者用于计数用途,在网上有很多资料,可自行查询。这里直接使用一段网上的相关代码:#include "DWTDelay.h" // 0xE000E原创 2020-07-22 20:53:48 · 2206 阅读 · 0 评论 -
FreeRTOS的移植与初步使用
一、下载FreeRTOS源码下载地址:https://www.freertos.org/二、将FreeRTOS中的源代码与头文件移植到自己的目录中将FreeRTOS中的Source文件夹中的.c文件、include文件夹移动到自己建立好的工程中 portable文件夹中选择对应的 编译器文件夹(port.c、portmarco.h)、MemMang (heap_ .c)(内存管理方式)MemMang夹中的5种内存管理方式: heap_1.c(适用于一旦创建好任务、信号量和队列就原创 2020-07-22 19:38:54 · 1117 阅读 · 0 评论 -
Truestudio 环境配置相关内容
转载自:https://blog.csdn.net/HongAndYi/article/details/91302621最近一直在使用STM32CubeMX和TrueSTUDIO进行STM32的程序开发,用起来已经是得心应手了。使用TrueSTUDIO的过程中知道了一些环境设置的小技巧,可以提高工作效率过减少问题,故专门贴出来。TrueSTUDIO的环境设置主要是在项目的属性设置对话框里进行设置。(1)使用并行编译在C/C++ Build的Behavior设置页面,勾选Enable para转载 2020-07-21 13:48:43 · 339 阅读 · 0 评论 -
STM32: ADC采样频率及相应时间的确定
转载自:http://m.elecfans.com/article/594153.html一、STM32 ADC 介绍 STM32 ADC 是一个12 位精度、 一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。 ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。 ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。转换时最快为1us,当ADC的输入时钟超过14MHz 时其会损失一转载 2020-07-21 10:05:41 · 41324 阅读 · 11 评论 -
Truestudio中的printf重映射(通过串口打印数据)(标准库版本)
一、printf重映射相关内容在Truestudio中与printf相关重映射的文件有:syscall.c、tinyprintf.csyscall.c: _write() 函数,在这个函数中最终实现串口打印 tinyprintf.c: printf 重命名成 iprintf ,然后由iprintf来重映射printf的功能1、__write()函数中使用串口发送要打印的数据:2、 iprintf与printf直接的关系:(重命名)3、iprintf中的函数实现:(True.原创 2020-07-09 11:55:20 · 684 阅读 · 0 评论 -
STM32Cubx中的使用小坑:使用st-link或者j-link下载一次后就无法再次下载的原因及解决方法
一、原因在STM32CubeMX中的sys选项 选择了 No Debug选项。(后面将No Debug 选项 改成 Serial Wire选项 就行了)二、解决方法那么无法下载一次后无法再继续下载调试的解决方法:1、将Boot0拉高后,再进行下载2、使用isp方式进行下载...原创 2020-07-09 11:37:35 · 3897 阅读 · 4 评论 -
STM32位带操作
一、STM32位带操作原创 2020-06-11 10:45:01 · 1059 阅读 · 0 评论 -
STM32F10x 更改外部晶振后,修改时钟频率的方法
转载自:https://blog.csdn.net/qq_26039331/article/details/78751047此文章为引用 正点原子详细讲解刚刚接触STM32的时候,用的都是8M晶振。比如你想更换到为外部晶振为12M,但是主频仍想用72M的。该如何设置?或者想倍频到更高的主频该怎么修改?例子就直接直接拿<正点原子>的例子吧! 属性 原来 现在 外部晶振 8M 12M 倍频 9 6 主频 72M 72M转载 2020-05-15 16:31:53 · 4376 阅读 · 0 评论 -
STM32芯片命名规则
原文转载自:https://www.cnblogs.com/dylancao/p/10330866.html 一张图看懂STM32芯片型号的命名规则 意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列、增强型系列;新系列产品沿用增强型系列的72MHz处理频率。内存包括64KB到256KB闪存和 20KB到64KB嵌入式SRAM。新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32平台的设计理念,开发人转载 2020-05-09 14:48:42 · 533 阅读 · 0 评论 -
STM32系统时钟RCC详解
转载自:https://blog.csdn.net/as480133937/article/details/98845509 1什么是时钟时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。 为转载 2020-05-09 14:07:48 · 2546 阅读 · 1 评论