- 2025-03-25
-
回复了主题帖:
【STM32H7S78-DK测评】第8篇 touchgfx做一个视频播放器
秦天qintian0303 发表于 2025-3-22 10:10
STM32H7S78-DK可以直接用touchgfx基于开发板创建,这样就避免一些外设不匹配问题
是的 用touchgfx真的太方便了 菜鸟入门必选
- 2025-03-21
-
发表了主题帖:
【STM32H7S78-DK测评】第8篇 touchgfx做一个视频播放器
打开touchgfx软件
新建一个screen
插入video
默认的是有几个example的视频的例如下面
可以不选择默认的视频,重新导入一个video,貌似只支持AVI格式的视频
电脑里目前缓存的大部分都是mp4格式 的文件
AVI的比较少,好不容易找到了一个
插入两个button
插入两个interaction事件
一个是PASUE video
一个是play video
生成code
下载运行
运行结果
1.默认的模板视频播放器
[localvideo]e68f169eec62de2e3a5a98f3a68e4180[/localvideo]
2.导入的视频播放器
[localvideo]5d349471cc22a492b3aa963f0ec52ebe[/localvideo]
- 2025-03-20
-
发表了主题帖:
【STM32H7S78-DK测评】第7篇 touchgfx初体验
首先安装touchgfx软件
我之前安装了 4.10感觉用不起来
现在换了4.25目前可以
点击Create创建工程
添加控件
生成代码下载
下载失败
提示cubeprogrammer未安装
于是又下载CUBEPROG安装
切记:CUBEPROGRAMMER必须要安装在默认路径里面,千万不要换目录,不然还是下载不成功
看提示
观看显示结果
[localvideo]5c919401957efbd6d3e23e18f1231070[/localvideo]
- 2025-03-18
-
回复了主题帖:
【2024 DigiKey大赛参与奖】开箱帖
秦天qintian0303 发表于 2025-3-18 08:42
小板子是什么型号的?
应该是F729 记不太清了
实在不知道买点啥
- 2025-03-17
-
发表了主题帖:
【STM32H7S78-DK测评】第6篇 图片切换显示
打开LCD Image Converter软件
开始转换成数组
生成h文件,从h文件里复制出数组到工程里
初始化函数
static void MX_LTDC_Init(void)
{
/* USER CODE BEGIN LTDC_Init 0 */
/* USER CODE END LTDC_Init 0 */
LTDC_LayerCfgTypeDef pLayerCfg = {0};
/* USER CODE BEGIN LTDC_Init 1 */
/* USER CODE END LTDC_Init 1 */
hltdc.Instance = LTDC;
hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL;
hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL;
hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL;
hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
hltdc.Init.HorizontalSync = 3;
hltdc.Init.VerticalSync = 3;
hltdc.Init.AccumulatedHBP = 11;
hltdc.Init.AccumulatedVBP = 11;
hltdc.Init.AccumulatedActiveW = 811;
hltdc.Init.AccumulatedActiveH = 491;
hltdc.Init.TotalWidth = 819;
hltdc.Init.TotalHeigh = 499;
hltdc.Init.Backcolor.Blue = 0;
hltdc.Init.Backcolor.Green = 0;
hltdc.Init.Backcolor.Red = 0;
if (HAL_LTDC_Init(&hltdc) != HAL_OK)
{
Error_Handler();
}
pLayerCfg.WindowX0 = 0;
pLayerCfg.WindowX1 = 800;
pLayerCfg.WindowY0 = 0;
pLayerCfg.WindowY1 = 480;
pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_ARGB8888;
pLayerCfg.Alpha = 127;
pLayerCfg.Alpha0 = 0;
pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
pLayerCfg.FBStartAdress = (uint32_t)&image_data_1;
pLayerCfg.ImageWidth = 800;
pLayerCfg.ImageHeight = 480;
pLayerCfg.Backcolor.Blue = 0;
pLayerCfg.Backcolor.Green = 0;
pLayerCfg.Backcolor.Red = 0;
if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN LTDC_Init 2 */
/* USER CODE END LTDC_Init 2 */
}
实现功能
通过软件生成多张图片的数组,每5S切换显示的相册图片
查看显示结果
[localvideo]d28a2f8945d99ff66b27e21faddbf6af[/localvideo]
-
发表了主题帖:
【2024 DigiKey大赛参与奖】开箱帖
得捷的商品终于邮寄到了,实在不知道买点啥,就买几个板子玩玩吧
其实我东西比较少,箱子是真大
打开箱子
看到两个板子
- 2025-03-11
-
回复了主题帖:
从某研究所学到的硬件保命小技巧
是不是可以一键全部练出来
- 2025-03-07
-
回复了主题帖:
测评入围名单: 电机驱动板X-NUCLEO-IHM16M1和NUCLEO-G431RB
已查看我的测评计划,可在活动期间内完成并发帖分享
- 2025-03-03
-
回复了主题帖:
《Linux内核深度解析》第6章 文件系统学习
Jacktang 发表于 2025-3-2 09:30
Linux系统中,理解文件系统管理的看来很重要。
是的 非常重要 离不开文件系统
- 2025-03-01
-
发表了主题帖:
《Linux内核深度解析》第6章 文件系统学习
第六章 文件系统
文件系统的基本数据单位是文件,它主要是对磁盘上面的文件进行组织管理,组织的方式不同,形成的文件系统也会不同。
在Linux中,文件和目录,块设备、管道、socket等等,都是由文件系统管理的。在Linux中的文件系统会给每个文件分配两个数据结构:索引节点(index node)和目录项(directory entry),它们都主要是被用来记录文件的元信息和目录层次结构
挂载文件系统
虚拟文件系统在内存中把目录组织为一棵树,一个文件系统,只有挂载到内存中目录树下的一个目录下,进程才能访问这文件系统。
执行
用法:mount [-t vfstype] [-o options] device dir
1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
Windows网络文件共享:smbfs (默认的windows系统都支持的)
windows网络共享文件:cifs
光盘或光盘镜像:iso9660
UNIX(LINUX) 文件网络共享:nfs
2.-o options 主要用来描述设备或档案的挂接方式。常用的参数有:
loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集
3.device 要挂接(mount)的设备。
4.dir设备在系统上的挂接点(mount point)。
实例:mount -t ntfs-3g /dev/sda1 /mnt/windows(umount /mnt/windows)
mount的流程
在Linux中,open 函数是文件操作的核心系统调用之一,它用于打开文件并返回一个文件描述符,用于后续的文件操作如读取、写入、关闭等。
跟踪内核 open 源码 open->do_sys_open
-
回复了主题帖:
【STM32H7S78-DK测评】第5篇 LTDC显示
xinmeng_wit 发表于 2025-2-25 19:34
显示效果不错啊
对的 这个效果的确可以的
- 2025-02-25
-
发表了主题帖:
【STM32H7S78-DK测评】第5篇 LTDC显示
STM32H7S78系列内置了LTDC控制器,可以方便的进行LCD显示开发。LTDC全称 LCD-TFT Display Controller,LCD显示控制器,提供了RGB信号和控制信号来直接控制外部LCD显示屏。一些屏幕称为RGB屏幕,内部没有驱动IC,操作这种屏幕时往往使用MCU内部集成的LCD控制器直接去控制LCD显示,显存空间当然也是在MCU内部,按照空间大小可以选择放在内部SRAM或者外部SDRAM中,如图:
LTDC外设的硬件连接其实和其它的外设一样,同名的信号连接在一起。这里提到一个名词“显示色彩格式”。典型区分为RGB888和RGB565两种格式,其实只是连接信号线的差异,对于RGB565只是把低位的 信号线给连接到了GND,从而省出来8根GPIO。
在每个像素时钟上升沿或时钟下降沿,并在屏幕有效区域内,LTDC层从其FIFO中检索一个像素数据,将其转换为内部ARGB8888像素格式,并将其与背景和/或其他图层像素颜色进行混合。得到的像素以RGB888格式编码,通过抖动单元并被驱动到RGB接口中。像素便会显示到屏幕上。
我们先去百度搜搜一张800*480的JPEG图片
然后打开LCD Image Converter软件
File
OPEN
打开之后可以看到这张图片
然后我们就要通过软件把图片转换成RGB888格式或者ARGB8888格式
我这个软件比较老估计,没有ARG8888,只能选择RGB888
点击OK
生成图片的数组
打开文件复制出来数组放到我们工程里面
我们软件需要改的地方不多
比较简单
大概就改这么多
然后下载运行
可以显示图片了
但是显示效果不是很好
RGB大家肯定都经常听说过,如果在RGB888的基础上加入8bit的Alpha(透明)通道的话一个像素点就是32bit,也就是4个字节,这种像素格式称为ARGB8888。
A:透明度Alpha
R:红Red
G:绿Green
B:蓝Blue
8888:表示由4个8位组成,即A=8,R=8,G=8,B=8,一个像素点占84=32位,共4个字节。
以此类推,ARGB_4444模式一个像素点占44=16位,共2个字节;ARGB_1555和RGB_565模式一个像素点占16位,共2个字节;其中RGB_565模式没有透明度。
下了一个新的LCD Image Converter软件
可以选择ARGB8888
显示效果
对比很明显这个清晰和色彩好多了
- 2025-02-18
-
回复了主题帖:
st中文论坛的账号密码忘记了,申请重置邮箱始终收不到邮件,大家遇到过吗,怎么弄?
垃圾邮件里看看呢 我之前碰到过被拦截到这里去了
- 2025-02-17
-
发表了主题帖:
【STM32H7S78-DK测评】第4篇 FLASH ECC学习
ECC(ErrorCorrect-ionCode)校验是一种内存纠错原理,它是现在比较先进的内存错误检查和更正的手段。ECC内存即纠错内存,简单的说,其具有发现错误,纠正错误的功能。首个 ECC 由数学家 Richard Hamming 发明。第一个 Hamming 码使用 7 位存储 4 位信息,冗余位用于纠正和检测错误。
“不同于NOR Flash内部结构,NAND Flash存储单元(cell)是串行组织的,当读取一个单元的时候,读出放大器(sense amplifier)所检测到信号强度会被这种串行存储结构削弱,这也难免降低了所读信号的准确性。因此如何保证NAND Flash数据的可靠性成了一个问题。ECC作为一种解决手段,被广泛使用”
为什么现在高端一些的或者汽车MCU都开始带FLASH ECC呢?
在 Flash 存储器中,数据会随时间衰减,尤其是在高温下。存储温度会对 Flash 存储器数据产生影响,但循环(编程)温度的影响更大。 Flash 存储器只能对每个存储字进行一定量的重写,这就需要在数据存储的情况下实现平均抹写存储区块。这两种类型的故障(一位错误和两位错误)均不可避免,但正确使用 ECC 可以防止数据丢失。而且随着芯片的制造工艺水平越高,带电粒子产生的位翻转就越多,此时的ECC是必须要有的,一般可以纠正1-2个bit
来看下H7的FLASH ECC介绍吧
使能一下错误中断吧
void HAL_FLASHEx_EnableEccDetectionInterrupt(void)
{
__HAL_FLASH_ENABLE_IT(FLASH_IT_DBECCERR);
}
进入错误中断后设置标志
进入回调函数
- 2025-02-12
-
回复了主题帖:
撒积分啦!!机器人开发圈公众号上线、还有多个新板块设立哦~~
已关注 紧跟前沿科技
- 2025-02-05
-
发表了主题帖:
【STM32H7S78-DK测评】第3篇 Coremark跑分
Coremark是一个综合性的基准测试程序,正如其名称所表示的, CoreMark测试是一个简单而又复杂的基准测试程序,是专门用来测试处理器核心性能的。通过执行常用于应用程序中的简单代码(基本的数据结构和算法)来测试cpu性能。结果是计算每秒钟主程序的迭代次数。
CoreMark测试是最大程度抛弃了程序对系统的依赖,不依赖于系统库函数,对编译器依赖也比较小,因此对于不同平台(如大小尾数,高端或低端处理器),其结果有较好的参考价值。运行 CoreMark测试产生一个简单分数,使用户能够快速比较不同处理器的性能。
CoreMark测试是读/写操作、整数操作和状态机控制等操作混合而成,其代码较小并易于理解。和其他 EEMBC基准测试项目不同, coremark不是某一实际的应用测试,但其实际工作内容,都是一些嵌入式系统中常用的算法,包括矩阵操作、链表操作、状态机操作和CRC算法等。
不说废话,开始移植coremark
一下载coremark
http://www.eembc.org/coremark/index.php
二创建工程
类似之前的printf工程
工程中添加文件
串口可以选择串口4和串口7
STLINK V3这个是支持VCP的
但是我的电脑驱动一直安装不对,不支持VCP很奇怪
只能放弃选择串口7
打开CUBEMX
配置串口属性
生成工程
添加代码
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart7, (uint8_t *)&ch, 1, 2);//huart????????
return ch;
}
/* USER CODE END 0 */
printf("welcom EEWORLD!!!");
测试结果
添加Coremark组
加入C文件
添加路径
增大一些堆栈大小
修改代码
跑了几次优化最高
也只有四百多分
只开DACHAE
开ICACHE后,执行速度会上升很多
注意时间可能不够,需要增加保证到10S
最终跑到3100多分
- 2025-02-04
-
回复了主题帖:
【STM32H7S78-DK测评】第2篇 串口输出
秦天qintian0303 发表于 2025-2-1 08:28
包装后的确实方便,就是有时候不知道去哪里找
HAL库目前看来 在很多对时序要求很高的场合,对HAL库不了解 极其容易出错,碰到好几次
- 2025-01-27
-
回复了主题帖:
EEWorld 2025春节放假通知
你们放假时间有点短啊这是
-
回复了主题帖:
【NUCLEO H533RE测评】基础功能测试(GPIO输出输入 定时器 PWM输出 串口)
写的很详细
大佬 过年还在忙技术呢
-
发表了主题帖:
【STM32H7S78-DK测评】第2篇 串口输出
一串口介绍
串口是一种应用十分广泛的通讯接口,可以实现两个设备的相互通讯。USART(通用同步异步收发器)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART,它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信
二 工程配置
串口可以选择串口4和串口7
STLINK V3这个是支持VCP的
但是我的电脑驱动一直安装不对,不支持VCP很奇怪
只能放弃选择串口7
打开CUBEMX
配置串口属性
生成工程
添加代码
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart7, (uint8_t *)&ch, 1, 2);//huart????????
return ch;
}
/* USER CODE END 0 */
printf("welcom EEWORLD!!!");
三 测试结果