STM32
文章平均质量分 53
pingxiaozhao
光看不练假把式!
展开
-
FCARM - Output Name not specified, please check ‘Options for Target - Utilities‘
将如下配置改为。原创 2024-05-11 15:05:33 · 1309 阅读 · 0 评论 -
KEIL5中头文件路劲包含问题
KEIL5中头文件路劲包含问题原创 2023-03-08 14:47:14 · 4708 阅读 · 0 评论 -
J-Link下载程序时无法连接
Could not establish a connection to target.原创 2022-08-16 10:09:43 · 8746 阅读 · 0 评论 -
RTX os error问题debug
RTX os error问题debug原创 2022-08-03 16:10:26 · 810 阅读 · 0 评论 -
DP83848+网线热拔插
DP83848+网线热拔插原创 2022-06-25 17:23:43 · 1481 阅读 · 0 评论 -
STM32H7 emWin用SDRAM做显存时的闪屏问题
屏幕运行一会儿会闪一次的问题这个问题只有在大批量对SDRAM快速操作时才容易出现,特别是仅使用了SDRAM,且将其作为LCD显存的同时,还使用SDRAM狂刷图。解决办法如果在程序中没有使用FMC NE1到NE4这个BANK,而仅使用了SDRAM和NAND(特别是仅使用了SDRAM),将NE1到NE4这4个驱动禁止即可解决。__FMC_NORSRAM_DISABLE(FMC_NORSRAM_DEVICE, FMC_NORSRAM_BANK1);__FMC_NORSRAM_DISABLE原创 2022-05-23 11:09:06 · 1258 阅读 · 2 评论 -
单CPU的ARM原子操作
原子操作就是多线程程序中“最小的且不可并行化的”操作。对于在多个线程间共享的一个资源而言,这意味着同一时刻,多个线程中有且仅有一个线程在对这个资源进行操作,即互斥访问。 单CPU的ARM中要保证资源的原子性,同一资源不能两个及以上的线程有写操作;写操作实际过程(汇编级:1.变量从内从读入内核寄存器;2.修改变量;3.变量写回内存)如果不保证资源的原子性,举例如下全局 int count = 0;C语言级,预期执行一次结果count应该是 2:task1...原创 2022-03-08 11:07:05 · 796 阅读 · 0 评论 -
STM32 I/O Retargeting
1.半主机模式半主机是用于 ARM 目标的一种机制,可将来自应用程序代码的输入/输出请求传送至运行调试器的主机。 例如,使用此机制可以启用 C 库中的函数,如 printf() 和 scanf(),来使用主机的屏幕和键盘,而不是在目标系统上配备屏幕和键盘。这种机制很有用,因为开发时使用的硬件通常没有最终系统的所有输入和输出设备。 半主机可让主机来提供这些设备。半主机是通过一组定义好的软件指令(如 SVC)来实现的,这些指令通过程序控制生成异常。 应用程序调用相应的半主机调用,然后调试代理处理该异原创 2022-02-22 13:30:38 · 1005 阅读 · 0 评论 -
STM32H7 DMA USART空闲中断接收不定长数据
1.关键设置2.代码2.1 bsp_usart.h/***********************************************************************************bsp_usart.h***********************************************************************************/#ifndef __BSP_USART_H__#define __BSP.原创 2022-02-11 17:15:42 · 2175 阅读 · 0 评论 -
Cortex-M3/M4/M7 内核HardFault错误调试定位方法
参考文章链接:Cortex-M3 / M4 Hard Fault Handler – Frank's Random Wanderings (frankvh.com)1.更改startup.s的启动文件把里面的HardFault_Handler代码段换成下面的代码:;/*********************************************************************;*;* Forward declarations of segments us转载 2021-10-25 15:06:07 · 3397 阅读 · 0 评论 -
J-link v9 使用技巧之虚拟串口功能
使用ITM机制实现调试stm32单片机,实现printf与scanf。1. ITM简介ITM机制是一种调试机制,是新一代调试方式,在这之前,有一种比较出名的调试方式,称为半主机(semihosting)方式。在pc上编写过C语言的人都知道,printf可以向控制台输出,scanf可以从控制台获取输入,这里的printf/scanf都是标准库函数,利用操作系统的这些函数,我们可以很方便的调试程序。在嵌入式设备上(如stm32单片机平台上)开发工具(如MDK/IAR)也都提供了标准库函,自然也提供了pri转载 2021-06-12 16:47:01 · 1579 阅读 · 0 评论 -
MicroSD卡(TF卡)SPI模式实现方法
MicroSD卡(TF卡)SPI模式实现方法 - Burden - 博客园 (cnblogs.com)转载 2021-06-08 22:38:49 · 1543 阅读 · 0 评论 -
MicroSD卡(TF卡)SPI模式实现方法
FatFs 是用于小型嵌入式系统的通用 FAT/exFAT 文件系统模块。FatFs 模块的编写符合 ANSI C(C89),并与磁盘 I/O 层完全分离,因此它独立于硬件平台。 它可以集成到资源有限的小型微控制器中,例如 8051,PIC,AVR,ARM,Z80,RX 等。此外,还提供用于微型微控制器的 Petit FatFs 模块。 看本文时需要有点 FAT 文件系统的基础,可以参考FatFs 之三 FAT文件系统基础、FAT 数据格式、引导、编码。...转载 2021-06-29 13:51:07 · 9755 阅读 · 1 评论 -
cortex-M3 的SVC、PendSV异常、SysTick异常
1.什么是异常,什么是中断?颜色加深的表项为异常,这些属于cm3内核自带的。其中-3,-2,-1异常的优先级固定,是不可更改的,其余的异常中断优先级可以设置。颜色未加深的表项为中断,这些属于stm32带出的。优先级 可设置。表格最前面的数字用来记录是第几个中断。2.SVC:系统服务异常。用户级想操作一些特权级的操作,是不可行的。假如修改底层寄存器的值是特权级操作,用户想修改底层的寄存器怎么办呢?方法就是用这个SVC 异常。OS会提供一些系统服务函数,用户调用这些服务函数,OS会发出S转载 2021-05-12 09:34:50 · 1491 阅读 · 0 评论 -
lvgl V7 内存泄漏问题
通过两个界面切换,验证内存泄漏问题1.如果是去掉lv_style_reset(&style); 或者lv_obj_del(cont2);则会内存漏2..如果是加上lv_style_init(&style);和lv_obj_del(cont2);则不会内存漏3.具体代码如下:static lv_obj_t *cont1;static lv_obj_t *cont2;static void menu1(void);static void menu2(void);...原创 2021-04-11 13:20:22 · 4651 阅读 · 3 评论 -
lvgl v7.10.1移植
下面我们一起来看一看LVGL在STM32上的移植使用。lvgl简介LittlevGL是一个免费的开源图形库,提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素、漂亮的视觉效果和低内存占用。特点: 强大的构建模组 按钮、图表、列表、滑块、图像等 先进的图形 动画、反锯齿、半透明、平滑滚动 多样的输入设备 触摸板、鼠标、键盘、编码器等 多显示器支持 支持同时使用多个TFT或单色显示器 多语言支持 UTF-8格式文字编码 完全...转载 2021-04-06 23:09:41 · 2536 阅读 · 0 评论 -
Qt 编译 littleVGL
1.所需要的材料如下:Qt5.14.2,下载到的文件名为 qt-opensource-windows-x86-5.14.2 SDL2,下载到的文件名为SDL2-devel-2.0.10-mingw.tar.gz littleVGL模拟器库,下载到的文件名为lv_pc_simulator.zip2.搭建环境为Win10 64位3.Qt5.14.2下载地址:https://download.qt.io/archive/qt/5.14/5.14.2/4.安装,4.1下载完之...原创 2021-04-03 22:40:29 · 348 阅读 · 0 评论 -
LVGL SPI FLASH 外部字库实现方法
1.打开软件LvglFontTool如下图,下载地址:http://armbbs.cn/forum.php?mod=viewthread&tid=99387&highlight=LvglFontTool2.根据自己需要选择如图红色框配置,点击“开始转换”,生成两个文件,myFont.bin与myFont.c, myFont.bin烧写到自己的SPI FLASH相应的地址,myFont.c添加到自己的LVGL工程中,具体代码如下/**-------------------.原创 2021-03-25 18:14:56 · 9918 阅读 · 6 评论 -
Keil4工程转keil5工程方法
1.打开Keil5,点击Project-->Open Project 选择要转的Keil4工程,打开后点击“确定”。2.点击Project-->Manage-->Migrate to Version 5 Format... ,如下图所示,之后弹窗点击“确定”。3.重新选择添加flash容量,编译,搞定!...原创 2021-03-24 10:35:33 · 5606 阅读 · 2 评论 -
RTOS任务切换对外设通讯的影响
通信类的零散数据做成buffer,收发全部由中断完成,块装数据做成dma+buffer收发,上层业务面向的是buffer,中断的优先级是在操作系统调用之上的。原创 2021-03-13 17:30:20 · 207 阅读 · 0 评论 -
优先级反转
优先级反转问题,用互斥信号量实现避免(互斥信号量有优先级继承控制算法)原创 2021-03-05 14:38:07 · 122 阅读 · 0 评论 -
STM32F1的8种GPIO输入输出模式
输入模式 -输入浮空(GPIO_Mode_IN_FLOATING) -输入上拉(GPIO_Mode_IPU) -输入下拉(GPIO_Mode_IPD) -模拟输入(GPIO_Mode_AIN)输出模式 -开漏输出(GPIO_Mode_Out_OD) -开漏复用功能(GPIO_Mode_AF_OD) -推挽式输出(GPIO_Mode_Out_PP) -推挽式复用功能(GPIO_Mode_AF_PP)在STM32中选用...转载 2021-01-10 17:52:13 · 1099 阅读 · 0 评论 -
STM32 程序卡死在B. ENDP
问题:程序卡死在startup文件中的此处原因:使能了中断(USART_ITConfig(UART5, USART_IT_TC, ENABLE); ),但是没有写中断入口函数(void UART5_IRQHandler(void)),中断进来找不到对应的中断入口函数,就会卡死在这里。加上之后,程序正常运行。...原创 2020-09-15 13:51:43 · 971 阅读 · 1 评论 -
STM32PWM频率计算
PWM计算PWM频率 = 定时器频率/(分频系数 x 自动重装载值)PWM占空比 = CCRx / 自动重装载值。period = CLOCK/Freq -1;pulse = (period+1)*Dutycycle / 100;注意:如果需要高精度,可以使用32位定时器原创 2020-07-21 18:07:58 · 7108 阅读 · 3 评论 -
emWin 多窗口切换注意事项
多窗口切换主要集中在两个地方出问题:一个是用户不规范的创建和删除窗口,控件或者对话框,另一个是有些控件忘记单独删除,一直在重复的创建,最终导致动态内存不足而死机,比如我们前面章节讲解的绘图控件Graph就是要单独删除的。针对这种情况,最好的解决办法就是调用函数GUI_ALLOC_GetNumFreeBytes()查询emWin动态内存的剩余,特别是在创建和关闭窗口,控件和对话框时,查询动态内存的剩余,看看是否动态内存一直在减少。切换方法:通过在按钮的释放消息里面调用函数GUI_EndDia.原创 2020-06-13 16:20:08 · 3136 阅读 · 0 评论 -
主流嵌入式开源GUI比较
https://blog.csdn.net/anyuliuxing/article/details/99691721?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-12.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-12.nonecase转载 2020-05-25 19:42:50 · 656 阅读 · 0 评论 -
窗口管理器实例(含自定义消息)
窗口管理器实例(含自定义消息)http://blog.sina.com.cn/s/blog_98ee3a930102wotq.html转载 2020-05-16 17:23:41 · 207 阅读 · 0 评论 -
STemWin窗口中任意绘制2D图形
在窗口上绘制2D图形第1种情况在窗口回调函数的WM_PAINT消息里面调用2D函数,这种情况是最常见的,也是最简单的。第2种情况通过函数WM_SelectWindow选择要进行2D图形操作。第3种情况在回调函数以外给窗口绘制2D图形,也是通过函数WM_SelectWindow选择要进行2D图形操作的目标窗口。不过要特别注意,创建后不能立即调用此函数进行绘制,一定要通过函数WM_Exec,GUI_Exec或者GUI_Delay将窗口绘制出来了,才可以调用函数WM_SelectWindo转载 2020-05-16 16:50:34 · 802 阅读 · 0 评论 -
Program Size: Code=x RO-data=x RW-data=x ZI-data=x 的含义
Program Size: Code=x RO-data=x RW-data=x ZI-data=x 的含义Code(代码): 程序所占用的FLASH大小,存储在FLASH.RO-data(只读的数据): Read-only-data,程序定义的常量,如const型,存储在FLASH中。RW-data(有初始值要求的、可读可写的数据):Read-write-data,已经被初始化的...转载 2020-04-10 12:25:37 · 332 阅读 · 0 评论 -
429 SPI DMA模式主从双机通讯
1.SPI框图2.SPI DMA模式配置为TI模式可以正常通讯主模式:#define SPI5_TX_BUF_SIZE 1*1024#define SPI5_RX_BUF_SIZE 1*1024SPI_T s_tSPI5;static uint8_t s_TxBuf[SPI5_TX_BUF_SIZE]; /* 发送缓冲区 */static uint8...原创 2019-12-23 15:08:51 · 1354 阅读 · 0 评论 -
STM32F429 PWM配置
void TIM4_PWM_Init(u32 arr,u32 psc, u32 dutyCycle){ GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; ...原创 2019-12-05 14:09:56 · 868 阅读 · 0 评论 -
STM32F429的LTDC和DMA2D
1.DMA2D则是一个生活在GRAM世界中的一个搬运工,往你指定的内存地址中制造一个矩形,或者把一个矩形数据从源RAM复制到目的RAM,并且完全由硬件实现。2.对LTDC_Layer_InitStruct结构体的这个(LTDC_CFBStartAdress:本成员用于设置该层的显存首地址,该层的像素数据保存在从这个地址开始的存储空间内)参数设置就是把SDRAM的地址,赋值给LCD的显示,使SD...转载 2019-11-18 16:18:55 · 968 阅读 · 0 评论 -
F429驱动TFT裸屏时LTDC时序配置说明
LTDC时序配置主要分三步就可以完成1.行同步,场同步,DE的极性配置2CLK时钟配置3.时序参数配置。转载 2019-11-18 14:35:13 · 619 阅读 · 0 评论 -
touchGFX的MVP架构来实现GUI和硬件的双向交互
转载 2019-10-10 11:11:38 · 1079 阅读 · 0 评论 -
RTX优先级 翻转问题
运行条件: 创建3个任务Task1,Task2和Task3,优先级分别为3,2,1。也就是Task1的优先级最高 任务Task1和Task3互斥访问串口打印printf,采用二值信号实现互斥访问。 起初Task3通过二值信号量正在调用printf,被任务Task1抢占,开始执行任务Task1.运行过程描述如下: 任务Task1运行的过程需要调用函数printf,发现任务Ta...原创 2019-08-24 16:58:21 · 421 阅读 · 0 评论 -
keil 下支持C99扩展格式和GNU扩展格式
实现方法:编译配置管理的c/c++选项卡中Misc control中填写 --c99(或者 --gnu )注意:“--c99”或“--gnu”实际上是在ARMCC中加入支持GNU或C99标准的扩展格式原创 2019-08-14 11:14:58 · 2656 阅读 · 0 评论 -
keil(arm)中配置c99方法 及 C99特性
配置方法:option->c/c++->misc controls:--c99转载 2019-08-13 17:32:58 · 2694 阅读 · 0 评论