
CubeMX
文章平均质量分 87
巨大八爪鱼
喜欢Win32和STM32编程
展开
-
【教程】用STM32 MotorControl Workbench 5.4.3(FOC电机库)从零创建一个工程,正弦波驱动联控智能24V无刷电机
联控智能24V无刷电机FOC5.4.3工程下载地址:https://pan.baidu.com/s/1AvbJA7iv6xg8x8kxFzA6wQ(提取码:sebj)本教程采用联控智能STM32F405RG低压单电机开发板,采用的无刷电机为联控智能24V无刷电机,如下图所示。单片机晶振大小为8MHz,驱动电机使用了3个IR2101S预驱芯片和6个IRF540N N-MOS管。单片机的运行频率为84MHz。虽然STM32F405RG的最高运行频率是168MHz,但是可能是因为板子上滤波电容的滤原创 2020-09-01 23:29:14 · 4541 阅读 · 2 评论 -
【程序】在联控智能STM32F405RG开发板(低压板)上用方波驱动24V无刷电机(使用3个预驱芯片IR2101S和6个IRF540N N-MOS管)
程序下载地址:https://pan.baidu.com/s/1gSrfLV3KZ4wMw1B5LAwrXQ(提取码:t8pf)本程序通过方波驱动联控智能的无刷电机。开发板为联控智能低压板,使用的单片机为STM32F405RG,晶振的大小为8MHz,如下图所示。程序实现了电机正转、反转、停转、速度增加和速度减小这五种功能,分别由按键1~5控制。程序为开环控制,没有实现PID速度闭环,也没有利用开发板上的各种电路保护器件(如MOS管过流保护、总电源过压保护等等)。所以,在运行程序前,一定要保证开发板供电电压原创 2020-08-01 22:21:41 · 2432 阅读 · 1 评论 -
【方法】STemWin图形库在MULTIBUF多缓冲区模式下获取当前绘图使用的缓冲区编号(BufferID)
我们在使用STemWin图形库的时候,在MULTIBUF多缓冲区模式下,有时我们希望获取当前绘图使用的缓冲区号,以及屏幕上显示使用的缓冲区号。我们在LCDConf_Lin.c中用DMA2D重写LCD_DEVFUNC_COPYRECT和LCD_DEVFUNC_FILLRECT函数时,也是需要获取绘图缓冲区的缓冲区号的。因为这两个函数传入的第一个参数是图层号,不是缓冲区号。图层(Layer)和缓冲区(Buffer)是两个不同的概念,不能错把图层号当做了缓冲区号,从而在MULTIBUF模式下GUI_Clear原创 2020-07-24 21:04:15 · 1203 阅读 · 0 评论 -
【STemWin】STM32F429IG单片机用LTDC驱动正点原子7寸RGB彩色触摸屏,并裸机移植STemWin图形库
【器件型号】单片机采用STM32F429IG,运行频率为180MHz。开发板采用外部32MB的SDRAM内存作显存。显示屏分辨率为800×480,颜色格式为RGB565,每个像素占2个字节(显示半透明位图时,位图每像素占3个字节),驱动方式为LTDC和DMA2D。显存占用内存的大小为800×480×2=768000字节=750KB。【测试程序】程序下载地址:https://pan....原创 2020-03-11 21:50:31 · 8446 阅读 · 6 评论 -
【STemWin】STM32F103VE单片机用FSMC驱动ILI9341彩色触摸屏(触控芯片XPT2046),并裸机移植STemWin图形库(采用LCDConf_FlexColor.c模板)
本程序采用的是STM32F103VE单片机,外部晶振的大小为8MHz,使用HAL库编写程序。去ST官网下载STM32F1的Cube包,文件名称为en.stm32cubef1.zip,STemWin图形库就位于STM32Cube_FW_F1_V1.8.0/Middlewares/ST/STemWin文件夹中。将整个inc文件夹复制到工程中,然后复制Config文件夹下的GUIConf.c、GUIConf.h、LCDConf_FlexColor.c和LCDConf_FlexColor.h文件(去掉了文件原创 2020-07-23 23:18:59 · 3278 阅读 · 0 评论 -
【方法】STemWin图形库中的GUI_DrawBitmap函数显示图片时,只截取图片的一部分并显示的方法
STemWin里面绘图的函数(如GUI_DrawBitmap)只能绘制整张图片,没有提供绘制图片指定区域的功能。如果想要截取图片的一部分然后显示到屏幕上,应该配合使用GUI_SetClipRect函数。下面的示例代码从bmp的(x0,y0)处截取width×height大小的图片,然后显示到屏幕的(x,y)坐标上。/* 截取一部分位图并显示 */void copy_part_of_bitmap(int x, int y, const GUI_BITMAP *bmp, int x0, int y0原创 2020-07-21 21:30:39 · 2207 阅读 · 0 评论 -
【STemWin】STM32H743VI单片机通过LTDC驱动4.3寸800×480高分辨率的40-pin FPC彩屏并裸机移植STemWin图形库
本程序使用的单片机为STM32H743VI,晶振大小为25MHz。程序利用LTDC驱动如图所示的RGB888接口的4.3寸高分辨率屏。彩屏的连接口是40-pin FPC接口,需要FPC座来连接。请注意FPC座的正反面。下面的绿色板子是一个FPC座转直插排针的板子。插的时候注意黑色那一面是不导电的,要朝外插进去,里面金属那一面才是导电的。一定要根据FPC座的情况确定1脚的方向,不要搞反了。笔者用的液晶型号是智晟鑫ZSX430-B4025,FPC座是40PIN翻盖式下接。...原创 2020-07-14 20:54:51 · 6079 阅读 · 3 评论 -
【程序】STM32F407VE单片机通过FSMC驱动Ilitek ILI9325液晶屏以及XPT2046触控芯片
本程序使用的单片机为STM32F407VE,晶振大小为8MHz,用10厘米长的杜邦线和彩屏相连,彩屏为微雪(Waveshare)的3.2inch 320x240 ILI9325 Touch LCD (C)。程序下载地址:https://pan.baidu.com/s/1LVQRdv3jZ9n5oAR_7yUZxw(提取码:awib)运行程序时如果发现LCD ID(0号寄存器)读出来是0,说明很有可能你的彩屏的芯片不是ILI9325,而是ILI9341。ILI9341的0号命令是空操作,是读不出来ID原创 2020-07-13 23:31:54 · 4982 阅读 · 2 评论 -
【方法】Ilitek ILI9325、ILI9341 LCD TFT彩屏利用Memory Read指令读取屏幕上显示的内容
网上很多彩屏例程都通过0号命令读取彩屏的ID号,以此来判断彩屏的芯片型号,然而ILI9341芯片的0号命令是一个空操作(No Operation),无法得到器件ID。4号命令和0xda~0xdc命令虽然是读取ID的命令,但是读出来的ID全都是0。这会不会是STM32 FSMC的时序配置问题?或者STM32的FSMC根本就不支持这款液晶的读操作?到底是STM32的时序问题,还是芯片的器件ID本来就为0?通过Memory Read(0x2e)命令可以发现,即使把FSMC的时序值配置为最小值,STM32也原创 2020-07-06 20:59:24 · 5139 阅读 · 2 评论 -
【程序】STM32F103VE单片机通过FSMC驱动Risym 2.8寸TFTLCD 320x240分辨率 ILI9325/ILI9341彩屏(ID寄存器读出来为0就说明驱动芯片是ILI9341)
前段时间在淘宝的Risym旗舰店买了一款2.8寸的TFTLCD彩屏,分辨率为320x240。这款液晶屏的控制芯片是ILI9325或ILI9328。卖家给的资料是一个压缩包,以前下载下来还能打开。现在下载下来打开提示“不可预料的压缩文件末端”,压缩文件是坏的。打开以前下载的压缩包,里面有两个例程:“STM32_FSMC_TFT_20130112-OK-MDK”和“STM32-ucosII+GUI3.9a-20121220-MDK”。运行第一个不带操作系统的例程,发现根本运行不了,液晶屏一直是白屏。原创 2020-07-05 20:35:09 · 3981 阅读 · 0 评论 -
【程序】在STM32F103RE裸机环境下用lwip 2.1.2驱动88W8801 WiFi模块并运行FTP服务器读写W25Q128上存储的文件(20200703版)
关于本程序更详细的信息,请参阅:【程序】在STM32单片机上用1700行代码实现基于LwIP 2.1.2协议栈raw API和FatFs文件系统的FTP服务器(20200703版)_ZLK1214的专栏-优快云博客程序下载地址:百度网盘 请输入提取码本程序可以在Wirelesslink 88W8801 WiFi开发板上直接运行。加入了FatFs文件系统后,一定不要忘了在startup_stm32f103xe.s中将栈大小Stack_Size改大否则很容易引起HardFault,和其他莫名原创 2020-07-04 00:12:34 · 5046 阅读 · 3 评论 -
【程序】在STM32单片机上用1700行代码实现基于LwIP 2.1.2协议栈raw API和FatFs文件系统的FTP服务器(20200703版)
本程序在LwIP 2.1.2协议栈上用raw API实现了一个FTP服务器。文件存储在Winbond的W25Q128 SPI Flash中,通过FatFs读写文件,建立了FAT文件系统,容量为16MB。程序只有1700多行代码,由头文件ftp.h和源文件ftpd.c组成。主要特点:1. 采用lwip的raw API实现,可以在裸机环境下运行,支持IPv62. 兼容Windows文件管理器和FileZilla FTP客户端3. 实现了文件浏览、上传、下载、重命名、新建文件夹、删除文件夹和文件等基本F原创 2020-07-03 21:25:17 · 7866 阅读 · 45 评论 -
【方法】20脚的STM32F042F6单片机只有32KB的Flash和6KB的SRAM,移植HAL库里面的USB大容量存储设备(MSC)时,如何读写页大小为4KB的W25Q128存储器?
STM32F042F6单片机的USB自带了内部的1.5kΩ上拉电阻,所以电路上只需要接两个22Ω的电阻就可以。程序运行时使能内部的上拉电阻,主机就能检测到USB设备。/* Private variables ---------------------------------------------------------*/// 本配置文件的主要任务是建立hpcd, 将hpcd->pData和main.c中的husbd关联// 并将usbd_core.c里面用到的USBD_LL_xxx函数与原创 2020-06-20 18:53:31 · 1923 阅读 · 0 评论 -
【解决方案】STM32单片机实现USB DFU IAP在线烧写程序的功能,但JumpToApplication跳转到用户程序时出现HardFault错误的解决办法
跳转代码如下:/* DFU工具下载的子程序虽然起始地址不是0x08000000 (由项目属性Target选项卡中的IROM1配置) 但是也可以在Keil中直接下载程序, 而且还能使用ST-Link进行程序调试 只要在DFU主程序中禁用CRC校验就行 请确保system_stm32xxxx.c中设置的SCB->VTOR刚好等于程序的起始地址*/#define CRCEN 1 // 若想要直接在Keil中下载并用ST-Link调试子程序, 则需要在主程序中禁用CRC校验#def原创 2020-06-03 00:00:57 · 2213 阅读 · 0 评论 -
【解决方案】STM32F103C8单片机运行CubeMX生成的CDC虚拟串口的程序,设备能枚举成功但不能启动的解决办法
这是因为USB的描述符出了问题。Win10系统下不需要装任何驱动就能使用USB虚拟串口,但更低版本的系统比如Win7则必须要安装ST官方提供的VCP驱动:STM32 Virtual COM Port Driver(STSW-STM32102)。在Windows 7下,usbd_desc.c中的设备描述符USBD_DeviceDesc的bDeviceClass和bDeviceSubClass可以为0,但USBD_VID必须为0x0483,USBD_PID必须为0x5740,否则无法匹配上安装的VCP驱原创 2020-05-28 22:45:38 · 2979 阅读 · 0 评论 -
【解决方案】STM32F107VC单片机下运行STM32CubeMX生成的USB_OTG Mass Storage工程,无法识别USB设备的解决办法
这是因为:CubeMX生成的代码里面,没有响应OTG_FS_IRQn中断。USB设备模式的电路如下。该电路适合所有的STM32型号。红框部分为上拉电阻,STM32F1(如STM32F103和STM32F107)才需要这部分电路,而STM32F4就可以不要。这是因为STM32F4的USB_OTG_GCCFG寄存器里面有NOVBUSSENS这一位,可以打开内部的上拉电阻,而STM32F1却没有。当PE1(可以选择其他I/O口)为低电平时使能上拉电阻,主机认为USB设备已插入。当PE1为高电平时,主机认为原创 2020-05-28 00:11:58 · 4782 阅读 · 0 评论