Cubemx
文章平均质量分 83
cubemx 使能详情
车间溜盖子
炮灰攻城狮
展开
-
1.33 定时器总结篇
auto-reload prelod:其表示如果中途修改了ARR的值,是本次比较的时候就生效呢,还是在下一个比较周期的时候再生效。为0,则代表本周期就生效,即没有buffer。从上面的描述中的"buffer"字眼,可以知道ARR的值是有一个影子寄存器的!如上图所示,定时器主要有几个部分组成:最上层的时钟部分,中间的时间计数部分,左下的输入捕获部分和右下的输出比较部分。其中时钟的来源很多,内部时钟是用的最多的,内部时钟一般是来自于APB总线的时钟;定时器本身有一个预分频器PSC,是需要设置的重要参数之一。原创 2023-10-19 10:46:30 · 151 阅读 · 0 评论 -
1.21 Cubemx_STM32F4 —IAP升级3(从FLASH中启动)代码举例:
实现的功能:芯片STM32F446ZETX,从SD卡读取升级文件,然后写入到flash,启动芯片。boot起始地址:0X08000000 /flash起始地址app地址:0x08020000。原创 2023-04-18 09:27:49 · 195 阅读 · 0 评论 -
1.0 如何使用cubemx并且移植RTX操作系统?(方法一)
1、正常配置cubemx。这一步骤就不过多介绍了,正常配就好了原创 2021-04-22 16:28:45 · 668 阅读 · 0 评论 -
1.0 如何使用cubemx并且移植RTX操作系统?(方法二)
1.0 如何使用cubemx并且移植RTX操作系统?(方法二)方法二的不同之处是直接从keil里面,进入cubemx,然后进行配置具体如下步骤 一:新建工程,选择RTXProject->New uvision Project,然后填写工程的文件名,保存。然后会跳出Device 里选择芯片型号:在接着会跳出:Manage Run-Time Envrionment对话框:在RTOS2(API)中选择 Keil RTX5然后点击下面Resolve,自动把缺的东西配置完步骤二:勾选需要的原创 2021-07-09 16:57:29 · 965 阅读 · 2 评论 -
1.1 Cubemx_STM32F4\H743 SDRAM程序(一)
采用W9825G6KH 这颗 SDRAM 芯片,原理图如下:cubemx配置参数如下:生成代码后不能立马使用,根据SDRAM芯片文档需要一个上电序列 SDRAM_Initialization_Sequence(&hsdram1);//发送SDRAM初始化序列void SDRAM_Initialization_Sequence(SDRAM_HandleTypeDef *hsdram){ u32 temp=0; //SDRAM控制器初始化完成以后还需要按照如下顺序初始化原创 2020-07-13 13:53:55 · 1438 阅读 · 1 评论 -
1.1 Cubemx_STM32F4\H743 SDRAM程序(二)
内存分配1、分配原理2、释放原理接着上面讲,使用内存池分配内存我们介绍一种比较简单的办法来实现:分块式内存管理。下面我们介绍一下该方法的实现原理,如图 43.1.1 所示:从上图可以看出,分块式内存管理由内存池和内存管理表两部分组成。内存池被等分为 n块,对应的内存管理表,大小也为 n,内存管理表的每一个项对应内存池的一块内存。内存管理表的项值代表的意义为:当该项值为 0 的时候,代表对应的内存块未被占用,当该项值非零的时候,代表该项对应的内存块已经被占用,其数值则代表被连续占用的内存块数。比如某原创 2021-11-10 21:04:09 · 915 阅读 · 0 评论 -
1.2 Cubemx_STM32空闲中断,非DMA收发
从前面文章知道,我用过DMA收发,但有时候需要用非DMA方式,我发现如果使用DMA方式发送的话,代码一下子多起来好的。我就是这个原因才用非DMA方式的。人狠话不多,直接上图,上代码:cubemx,配置如下,全局中断打开,其他波特率什么的可自行配置,略过:直接生成后初始化添加的代码,开启中断:void usart1_Init(){ HAL_UART_Receive_IT(&huart1, rx_EPOS_Buff, EPOS_RX_FRAME_LEN); __HAL_UART_ENAB原创 2020-05-29 16:08:32 · 553 阅读 · 0 评论 -
1.3 Cubemx_STM32F4 闹钟的设置
目的:每天定时闹钟直接上过程:步骤一、配置日历设置,我这里是20-03-06 9:00:00 星期五。那天都无所谓,有函数可以修改。闹钟设置:09:01:00秒的闹钟注意:Alarm mask hours等这些设置,我英语不太好,但是我知道mask是什么意思。它是屏蔽的意思。我这里是每天09:01:00。如果全部不屏蔽,则,RTC时间与闹钟时间完全一致才会触发。mask是用来屏蔽触发...原创 2020-03-10 18:07:53 · 2218 阅读 · 0 评论 -
1.4 Cubemx_NandFlash_STM32F4\H7
写这篇文章的时候,我已经花了三天搞这个东西了。期间遇到两个问题,搞了好久才解决:1、生成的代码全速跑,弹框提示 Could not stop Coretx-M device!Please check the JTAG cable。2、ID可以读出,但是数据写进去与读出来不一致,出现错位。上面问题我网上搜索了很久,很多人遇到的问题,但是只是提,没人答。先介绍两颗芯片MT29F4G08由图可知:MT29F4G08 由 2 个 plane 组成,每个 plane 有 2048 个 block,每个原创 2020-07-15 17:06:04 · 1455 阅读 · 0 评论 -
1.5 Cubmx_STM32 CAN通讯,多包数据收发送的处理
一、遇到的问题1、发送单包数据,我想都非常简答,例子一大堆包括,demo。但是发送多包数据怎么处理?2、发送多包数据,网上基本上就两种说发*两个数据之间加延时*查询邮箱是否满了HAL_CAN_GetTxMailboxesFreeLevel()对比上面两种方法,为了效率我们选择第二种二、配置与代码直接上cubemx配置直接生成后,cubemx没有设置过滤器,需要自己添加,结合网上各资料总结代码如下int main(void){ /* USER CODE BEGIN 1 */原创 2020-10-15 09:26:33 · 2989 阅读 · 1 评论 -
1.6 Cubemx_STM32F103_NOOS SDIO_DMA_FATFS基于SD卡的FATFS测试(一)
一、遇到的问题:1、刚开始挂载成功,f_open一直不行。;后面发现新版cubemx FATFS->configuration->Platform Setting里有一个BSP设置函数,用来检测SD卡是否插入。2、解决上面问题,发现还是不太行,后面就降低了频率。SDIOCLK clock divide factor设置为4。 SDIO DMA中断高于SDIO 中断。3、加上上面问题后,f_open f_write f_read都可以,但是偶尔会出差;f_mkfs报错 FS_DISK_E原创 2020-09-28 14:01:48 · 1773 阅读 · 0 评论 -
1.7 Cubemx STM32F429_RTX SDIO_DMA_FATFS基于SD卡的FATFS测试(二)
一、配置二、代码int Counter11;void main_task (void * arg) { char Save_Temp[21]; FRESULT result; rtc_t RTC_CurrentTime={0}; fatfs_test(); mf_scan_files(""); mf_showfree(""); while(1) { osDelay(1000); RTC_GetTime(&RTC_CurrentTime); R原创 2020-10-15 09:30:12 · 442 阅读 · 0 评论 -
1.7 Cubemx STM32F429_RTX FATFS 库函数讲解(三)
if(finfo.fattrib == AM_ARC),意思是只对存档文件进行处理;<ByteToRead,即本次读取到的字节小于准备读取的字节,说明读指针已到达。例程:此处参考酷学玩例程,以读取的方式打开文件,然后将文件内容通过串口输出。a) *FileObject : 指向文件对象结构体的指针。b) *Buffer : 指向存储读取到的数据的缓冲的指针。c) ByteToRead : 准备读取的字节数。ByteRead 值等于本次读取到的字节数,若。1. 这个函数可以读取文件的内容。原创 2023-02-01 16:59:54 · 768 阅读 · 0 评论 -
1.8 Cubemx_STM32F4_步进电机(一)----基础知识
1、电机分类同步电机-------交流电动机的一种,转速完全按照下面关系式运转:转速=(频率X60)/磁极对数,转速与供电频率有关第,只要频率不变,转速就不会变,用在转速要求恒定不变的设备中。增大负载,转子速度不变或者说转子角速度与交流电源的角频率同步。异步电机------交流电动机的一种,转速也取决于供电交流电源的频率,但转子角速度只有在理想空载情况下才与电源角频率同步,实际上总是小于同步角速度即存在一定的转差,并且转差随负载的增加而增大;低造价等特点,是工农业中最常用的电机。直流电机------原创 2020-10-22 12:50:57 · 4246 阅读 · 0 评论 -
1.9 Cubemx_STM32F4_57步进电机(一)----驱动代码
1、理论知识见Cubemx_STM32F4 步进电机(一)基础知识2、配置3、代码keil ver. V5.29.0.0cubemx ver. v5.6.0firmware ver. FW_F4 V1.25.1bsp_motorstep.c#include "bsp_stepmotor.h"/* 变量 ------------------------------------------------------------------*/uint32_t Toggle原创 2020-10-22 17:19:27 · 1355 阅读 · 0 评论 -
1.10 Cubemx_STM32F4 步进电机(二)----梯形曲线理论
1、理论分析梯形速度曲线:步进电机控制脉冲比如说定时器分配器为35,那么定时器时钟频率为=72M/(35+1)=2M,t=1/2M.spr:步进电机旋转一圈脉冲数;n:脉冲数;rad:弧度单位;rpm: 转每分钟。在加减速阶段,加速度,速度,位置,对应关系如图:δ是脉冲时间间隔,它的大小决定着步进电机转速,为了让电机转速符合加减速曲线,计算合适时间间隔是非常重要的,在加减速度阶段可认为是线性变化的,达到平稳阶段是不变的。使用定时器的计数频率来离散步进控制步进电机运动和处理时间间隔,如下原创 2020-10-25 14:11:37 · 647 阅读 · 0 评论 -
1.11 Cubemx_STM32F4 步进电机(三)----梯形曲线驱动代码
1、配置2、代码版本:keil ver. V5.29.0.0cubemx ver. v5.6.0firmware ver. FW_F4 V1.25.1PE3 LIMPOSPE5 LIMNEGPA4 ORGINPA5 ENAPB0 DIRPB1 STEPbsp_stepmotor_t.c#include "bsp_stepmotor_t.h"#include <math.h>/* 私有类型定义 ---------------------------原创 2020-10-25 14:19:02 · 709 阅读 · 0 评论 -
1.12 Cubemx_STM32F4 步进电机(四)----S曲线理论
一年前做过的S型曲线加减速算法,再次做的时候竟然犯错,在此总结记录一下,方便以后查阅,同时希望帮助初学者提供简单的参考资料(注:本项目采用的带细分的驱动器,MCU的OC比较输出模块产生50%的PWM方波)。S型曲线的的方程,在[-5,5]的图形如下图所示:如要将此曲线应用在步进电机的加、减速过程中,需要将方程在XY坐标系进行平移,同时对曲线进行拉升变化:其中的A分量在y方向进行平移,B分量在y方向进行拉伸,ax+b分量在x方向进行平移和拉伸。项目中加速过程:从5600Hz加速到64000Hz,采转载 2020-10-29 09:58:34 · 1489 阅读 · 0 评论 -
1.13 Cubemx_STM32F4 步进电机(五)----S形曲线代码
1、Cubemx配置和T形曲线一致2、代码keil ver. V5.29.0.0cubemx ver. v5.6.0firmware ver. FW_F4 V1.25.1PE3 LIMPOSPE5 LIMNEGPA4 ORGINPA5 ENAPB0 DIRPB1 STEPbsp_stepmotor.c#include "bsp_stepmotor_t.h"#include <math.h>/* 私有类型定义 --------------------原创 2020-10-29 14:52:21 · 703 阅读 · 3 评论 -
1.14 Cubemx_STM32 DSP 做FFT运算
写这篇文章之前,我是调试了差不多一整天,并不是我对快速傅里叶变换了解透了。只是把ST官方库实现FFT怎么用了解的差不多了。为什么单片机上要用FFT转化?在个人上说,只能说上面吃饱 了没事干,上位机已经弄好的,非得弄到下位机来搞。而且因为肺炎的原因,个人那微不足道的工资又TM打了个7折,所以心情很不爽。不过从理性角度来说,如果算法可以用在下位机上对产品来说是很好的,毕竟脱离的电脑。在上位机与下位...原创 2020-02-28 13:39:10 · 3958 阅读 · 3 评论 -
1.15 Cubemx_STM32F4 TIM(一)----PWM呼吸灯
1、配置计数模式分为向上计数或者向下计数自动装载值即ARR,即PWM周期计数比较器CCRx,即占空比极性,出差有效是高电平还是低电平PWM 模式1PWM模式2输出电平与输出极性、PWM模式有关向上计数:如果PWM mode1 极性H ;按照上面红线输出如果PWM mode1 极性L ;按照上面绿线输出如果PWM mode2 极性H ;按照上面绿线输出如果PWM mode2 极性L ;按照上面红线输出直接生成代码2、代码bsp_pwm.c#include "bsp_pwm原创 2020-10-15 14:56:42 · 831 阅读 · 0 评论 -
1.16 Cubemx_STM32F4 TIM(二)----PWM呼吸灯
1、回顾、原理前面文章利用,ARR,CCRx制作了呼吸灯。void motor_task (void * arg) { osStatus_t status; bsp_InitPWM(); /*pwm PB1*/ while(1) { #ifdef BLN_ //呼吸灯 uint16_t pwmValue; while (pwmValue < _TIM3_ARR) { pwmValue ++; bsp_SetPWM_CCRx(pwmValue);原创 2020-10-16 15:07:07 · 974 阅读 · 1 评论 -
1.17 Cubemx_STM32F4 TIM(三)----输入捕获
一、原理t1就是从开始到触发到了上升沿的时间,t2就是从定时器开始到触发到了下降沿。ARR就是计数器的满值,我们本次实验设置为0xffffffff,向上计数,所以t1就是计数了CCRx1个定时器周期的时间。在此图中我们要计算的是上升沿到下降沿之间的时间,也就是t2-t1的区间。计数器值最大不超过0xffffffff,但是到达最大值只能记一次循环,然后再从0开始计数。时间总计数 = 溢出次数*0xffffffff+TIM5CH1_CAPTURE_VAL本次实验我们要获取到KEY_UP的高电平脉冲时原创 2020-10-19 18:26:55 · 570 阅读 · 0 评论 -
1.18 Cubemx_STM32F4 TIM(四)----输出比较(步进电机)
一、原理计数器的值到达CCRx_1设置值时,电平会进行一次翻转。而后进入中断,输出比较回调函数函数HAL_TIM_OC_DelayElapsedCallback。如果在回调函数里重新设值CCRx_2,那么进行到达CCRx_2电平再次翻转。二、配置...原创 2020-10-21 09:40:06 · 4787 阅读 · 5 评论 -
1.19 Cubemx_STM32F4 TIM(五)---- 总结
一、寄存器总结:预分频寄存器16bit(TIMx_PSC)计数器时钟频率CK_CNT=fck_psc/(PSC[15:0]+1)自动重装载寄存器(TIMx_ARR)重复计数器寄存器 (TIMx_RCR)向上/向下自动装载计数器(TIMx_CNT)控制寄存器 1(TIMx_CR1)从模式控制寄存器 (TIMx_SMCR)DMA/中断使能寄存器(TIMx_DIER)状态寄存器(TIMx_SR)事件生成寄存器 (TIMx_EGR)捕获/比较模式寄存器1 (TIMx_CCMR1)捕获/比较使原创 2020-10-22 16:51:49 · 1299 阅读 · 0 评论 -
1.20 Cubemx_STM32F4 —IAP升级1(存储理论知识)
以下均以STM32F429IGT6为例一、存储器映射存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就称为存储器映射,具体见图 5-5。如果给存储器再分配一个地址就叫存储器重映射。1、存储区域功能规划:在这 4GB 的地址空间中,ARM 已经粗线条的平均分成了 8 个块,每块 512MB,每个块也都规定了用途,具体分类见表格 5-1。每个块的大小都有 512MB,显然这是非常大的,芯片厂商在每个块的范围内设计各具特色的外设时并不一定都用得完,都是只用了其中的一部分而原创 2021-01-25 11:37:58 · 829 阅读 · 0 评论 -
1.21 Cubemx_STM32F4 —IAP升级2(从FLASH中启动)
只有 0X80000-0X20000=0X6000(384K 字节)大小了。为 0X08020000,即偏移量为 0X20000(128K 字节),因而,留给 APP 用的 FLASH 空间(Size)默认的条件下,图中 IROM1 的起始地址(Start)一般为 0X08000000,大小(Size)为 0X80000,1、在bootlooder程序中往FLSH APP区写入需要更新的代码。即从 0X08000000 开始的 512K 空间为我们的程序存储区。而图中,我们设置起始地址(Start)原创 2021-01-22 14:50:33 · 560 阅读 · 1 评论 -
1.22 Cubemx_STM32F4 —IAP升级3(从SRAM中启动)
1、理论过程。内部FLASH空间规划:内部SRAM空间划分IAP实现流程:1.根据入参拷贝指定FLASH扇区内容到SRAM_ADDR_APP_START (0X2000 2000)起始的地址中。2. 跳转地址指向APP的复位中断向量;3.关闭所有中断;4.开始跳转。2、代码/* USER CODE BEGIN Header *//** *************************************************************************原创 2021-01-22 14:14:15 · 741 阅读 · 1 评论 -
1.23 不需要修改 BOOT 引脚从SRAM仿真
前面文章代码可以放到SRAM中来跑,但是这样就非常不方便我们去仿真了。但是keil支持从SRAM仿真。假如您使用的硬件平台中 BOOT0 和 BOOT1 引脚电平已被固定,设置为内部 FLASH启动,不方便改成 SRAM 方式,可以使用如下方法配置调试选项实现在 SRAM 调试:(1)、勾选“Verify Code Download”及“Download to FLASH”选项。(2)见 下图 ,在“ Options for Target->Debug ” 对 话 框 中 取 消 勾 选 “原创 2021-04-28 18:03:29 · 529 阅读 · 0 评论 -
1.24 cubemx 配置spi_flash_fatfs
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-08-03 16:21:17 · 306 阅读 · 0 评论 -
1.25 Cubemx_STM32H743II—QSPI
W25Q256FV :256M-bit /32M byteStandard SPI:CLK,/CS,DI,DO,/WP,/HOLDDual SPI:CLK,/CS,IO0,IO1,/WP,/HoldQuad SPI:CLK,/CS,IO0,IO1,IO2,IO33 or 4-Byte Addressing ModeSector/BlockBlock:block000000000 --0000FFFFH64Kblock100010000 --0001FFFFH64K.原创 2021-09-08 17:00:51 · 3668 阅读 · 0 评论 -
1.26 Cubemx_STM32F429\H7LCD
LCD1、LCD介绍1.1 TFT(MCU)_LCD、RGB_LCD1.2 接口1.2.1 接口种类1.2.2 8080 接口1.3 MCU_LCD1.3.1 原理图及工作原理1.3.2 FMC-SRAM1、LCD介绍1.1 TFT(MCU)_LCD、RGB_LCDMCU-LCD屏它与RGB-LCD屏主要区别在于显存的位置: RGB-LCD的显存是由系统内存充当的,因此其大小只受限于系统内存的大小,这样RGB-LCD可以做出较大尺寸,象现在4.3"只能算入门级,而MID中7",10"的屏都开原创 2021-09-16 18:19:55 · 2336 阅读 · 1 评论 -
1.27 Cubemx_STM32H7 软\硬件I2C
Cubemx_STM32H7 硬件I2C1、I2C简介2、Cubemx配置1、I2C简介• 400 kHz Compatibility• 8-byte Page (1K, 2K), 16-byte Page (4K, 8K, 16K) Write Modes• Self-timed Write Cycle (5 ms max)Pin Name Function:A0 − A2Address InputsSDASerial DataSCLSerial Clock I原创 2021-09-22 16:02:38 · 2946 阅读 · 1 评论 -
1.28 Cubemx_STM32H743 触摸屏
Cubemx_STM32H743 触摸屏1. 触摸屏的分类1.1 电阻式触摸屏1.2 电容式触摸屏1. 触摸屏的分类1.1 电阻式触摸屏 在 Iphone 面世之前,几乎清一色的都是使用电阻式触摸屏,电阻式触摸屏利用压力感应进行触点检测控制,需要直接应力接触,通过检测电阻来定位触摸位置。 ALIENTEK 2.4/2.8/3.5 寸 LCD 模块自带的触摸屏都属于电阻式触摸屏,下面简单介绍下电阻式触摸屏的原理。电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄原创 2021-09-18 16:59:14 · 4519 阅读 · 1 评论 -
1.29 Cubemx_STM32F429\H743 nandflash、spifalsh纳入文件管理系统
NandFlash作为文件管理系统1 简介2. FATFS 读写文件的流程3. SPI、Nand 纳入文件管理系统4. FATFS函数部分讲解4.1 f_mount4.2 f_open()1 简介实际上跟SPI_FATFS是一样的道理。cubemx配置也是一样。选择User-defined.1.24 cubemx 配置spi_flash_fatfsNandFlash要作为文件系统管理起来,我们需要借助于FTL。FTL 是 Flash Translation Layer 的简写,即闪存转换层,它是一原创 2021-09-29 15:56:57 · 903 阅读 · 0 评论 -
1.30 Cubemx_STM32H743 SD_Card纳入文件管理系统
Cubemx_STM32H743 SD_Card纳入文件管理系统1、简介2、CubeMX配置1、简介和前面文章原理其实一样的。1.29 Cubemx_STM32F429\H743 nandflash、spifalsh纳入文件管理系统现在一并将SD卡、NandFlash、SPIFlash一并作为文件管理。下面直接介绍SDcard,其他参考前面文章。2、CubeMX配置...原创 2021-10-21 21:00:25 · 522 阅读 · 0 评论 -
1.31 升级bin文件添加后缀及文件长度
升级添加长度及后缀原创 2022-07-22 11:05:33 · 566 阅读 · 0 评论 -
1.32 Cubemx_STM32F429串口中断+空闲中断
有时候串口接收数据时,没有帧头与帧尾,单纯使用单字节中断接收数据,不太好断帧。如果单纯使用空闲中断接收数据,当帧内数据不连续或者黏包,使用空闲中断接收就会出现接收的数据小于或者大于帧长度,比较难断帧。解决办法发送命令,等待返回数据,利用单字节中断将接收的数据压入缓存堆栈,当发生空闲中断后,判断缓存里的数据是否达到帧长度,如果是,解析数据,清空缓存;否则继续接收数据,知道达到帧长度,然后解析数据,清空缓存。发送命令,等待返回数据,如果产生空闲中断,数据压入缓存堆栈,判断是数据长度是否完成,如果是,解析数据,清原创 2022-12-05 10:44:44 · 1342 阅读 · 0 评论