
单片机
文章平均质量分 63
AI嵌入式
这个作者很懒,什么都没留下…
展开
-
Keil 编译出错 A Label was found which was in no AREA
这情况是由于把 分散加载文件 *.sct 文件加入了工程目录中,导致参与进了编译环节,在工程中去掉 sct文件 ,原创 2024-06-07 16:26:20 · 278 阅读 · 0 评论 -
keil program algorithm 出错
就是 加载下载算法后, 下载算法的RAM空间 大小不能修改为 单片机的最大RAM,只能改到最大4KB的空间大小, 再大就报错。前段时间 在 调试下载算法时,遇到一个奇怪的问题。到最后 才发现是 RAM空间太小 导致出错,刚开始报错 一直不知道原因,走了很多弯路,就能修改成单片机的最大RAM大小了。最后再下面这地方乱点了几下。原创 2024-06-07 15:44:18 · 380 阅读 · 0 评论 -
C语言中 一种特殊的 数组或结构体 初始化方法
初始化器的用法原创 2024-05-23 08:50:11 · 649 阅读 · 0 评论 -
串行FLASH W25Q128JV E 介绍
请注意,芯片选择引脚 (/CS) 必须在上电时跟踪 VCC 电源电平,直到达到 VCC-min 电平和 tVSL 时间延迟,而且还必须在掉电时跟踪 VCC 电源电平,以防止出现不利的指令序列。当 /HOLD 为低电平时,当 /CS 为低电平时,DO 引脚将处于高阻抗状态,DI 和 CLK 引脚上的信号将被忽略(无关紧要)。与状态寄存器的块保护(CMP、SEC、 TB、 BP2、 BP1 和 BP0) 位和状态寄存器保护(SRP)位结合使用,可对小至 4KB 扇区的部分或整个内存阵列进行硬件保护。原创 2024-05-22 18:40:25 · 1193 阅读 · 0 评论 -
【兆易创新GD32H759I-EVAL开发板】 移植LVGL
因为这个板子的屏幕也不小。,所以就算是单个整屏显存也要占用250kb左右的大小。使用双显存的话,需要将显存的位置定义在外部的任务中。将显存定义在外部任务中有几种方式。1) 不使用自定义sct文件,在Keil的工程中配置好外部显存的地址。然后在代码中指定分配地址,或者在代码属性中设置分配地址2)使用自定义的sct文件, 在代码中指定 显存的位置如 Arm V6下 :先在sct中定义 SDRAM 的分配区,然后再代码中定义:原创 2024-05-16 02:19:27 · 1240 阅读 · 0 评论 -
关于Keil 的编译选项 LTO 代码优化 你必须知道的事
平时不要用, 功能开发完成前不要用, 等代码运行稳定后在开启优化师可以的。这个选项 会让很多高级自定义功能失效,甚至函数报错,奇怪的异常。LTO 这个 听起来很好,功能强大。不然 掉坑里 你很久会爬不出来。原创 2024-04-11 01:19:47 · 521 阅读 · 0 评论 -
【兆易创新GD32H759I-EVAL开发板】启动代码分析
这里的 `ADD` 指令用于将R0寄存器的值和立即数 `0x8000` 相加,并将结果存储在R1寄存器中。具体来说,`STRD R2, R2, [R0], #8` 会将R2(已被设为0)的值存储到R0指向的地址,然后R0会自动增加8(因为STRD是将双字存储,所以一次存储8个字节),循环直到R0不再小于R1,也就是说,整个从 `|Image$$RW_IRAM1$$RW$$Base|` 到 `|Image$$RW_IRAM1$$RW$$Base| + 0x8000` 的内存区域被清零。导入RAM的起始地址。原创 2024-04-08 22:53:48 · 599 阅读 · 0 评论 -
C语言中,`while` 和 `for` 的区别
在以上示例中,两种循环结构都可以用来实现相同的功能,但是 `for` 循环更加紧凑,并且初始化、条件检查和增量表达式都在同一位置。当循环需要初始化、条件检查 和 增量表达式 在同一位置时,`for` 循环可以提供更清晰的代码结构。在C语言中,`while` 和 `for` 是两种循环结构,它们的作用是执行一段代码多次,直到满足某个条件为止。在 `for` 循环中,初始化、条件和增量表达式通常在循环头部定义,更加紧凑。循环条件在循环体内部或者其他地方计算时,通常使用 `while` 循环。原创 2024-04-01 20:46:34 · 569 阅读 · 0 评论 -
【兆易创新GD32H759I-EVAL开发板】 关于LVGL 的内存配置
是用于存储屏幕绘制操作的临时像素数据的内存区域。的大小不会直接影响显示缓存的大小,它们各自独立配置。然而,从整个系统资源管理的角度看,两者都从系统的总可用内存中分配,因此在设计时需要考虑整体内存的分配和优化。是在LVGL配置中定义的一个宏,它指定了LVGL内部使用的内存池的大小。决定了LVGL可以使用的总内存量,对于运行LVGL的系统来说,这个值需要根据可用内存资源、UI复杂性等因素谨慎设置。理解它们之间的关系对于优化LVGL的性能和内存使用非常重要。但是我们也应该明白 所定义的内存大小的 的一些概念。原创 2024-03-21 16:51:54 · 1171 阅读 · 0 评论 -
“掌握嵌入式系统存储器布局的关键:深入解析Scatter文件“
Scatter文件,也称为分散文件或者链接文件,是在嵌入式领域中用于描述程序代码、数据和资源在存储器中的布局方式的文件。在嵌入式系统中,通常会有多个存储设备,比如闪存、RAM、ROM 等,而 Scatter 文件则用于指导编译器将程序的各个部分正确地分配到这些存储设备上。主要作用包括:1. **定义存储器布局**:Scatter 文件描述了程序的各个部分应该被加载到存储器的哪些地址范围内,以及它们在存储器中的排列顺序。原创 2024-03-20 23:49:58 · 1080 阅读 · 0 评论 -
XPT2046触摸屏驱动
以下是一个基本的XPT2046驱动库设计,包括初始化、读取X轴、Y轴位置、读取压力、坐标转换和检测触摸的函数。请注意,这是一个基本的驱动库实现,具体细节(如SPI引脚配置、坐标转换和校准等)需要根据GD32H759I-EVAL开发板和XPT2046触摸屏的实际连接和参数进行调整和完善。// 根据具体的显示屏分辨率和校准数据,将原始坐标转换为屏幕坐标。// 根据读取的压力值或T_IRQ引脚的状态判断是否有触摸发生。// 根据Z1和Z2的值计算压力。// 选择XPT2046。// XPT2046 命令。原创 2024-03-17 00:00:05 · 1026 阅读 · 0 评论 -
【兆易创新GD32H759I-EVAL开发板】图像处理加速器(IPA)的应用
参数(在结构体中)意义:为整个前景图像设置统一的alpha透明度值。作用:用于在混合操作中调整前景图像的透明度,实现透明效果或图像覆盖。概念:Alpha值用于定义像素的透明度。前景预定义的alpha值是在图像融合或者alpha混合操作中,前景图像像素的默认透明度值。这个值会根据设置的alpha计算模式与前景像素的实际alpha值(如果存在)一起决定最终的像素透明度。概念:前景预定义的红、绿、蓝色值允许用户为整个前景图像设置一个统一的颜色调整或色彩偏移。原创 2024-03-15 13:51:54 · 2424 阅读 · 0 评论 -
【兆易创新GD32H759I-EVAL开发板】Keil平台快速搭建Free RTOS 系统
去掉 SVC_Handler(void),PendSV_Handler(void),SysTick_Handler(void)三个函数。// 延时500ms。// 延时500ms。// LED点灯任务函数。原创 2024-03-15 00:15:07 · 1000 阅读 · 0 评论 -
【兆易创新GD32H759I-EVAL开发板】认识主芯片架构
GD32 内核结构基本介绍原创 2024-03-14 14:05:41 · 1936 阅读 · 0 评论 -
【兆易创新GD32H759I-EVAL开发板】整体介绍与上手指南
兆易创新GD32H759I-EVAL开发板 整体介绍,GD32H7 资源介绍,与上手指南原创 2024-03-13 19:08:08 · 4567 阅读 · 1 评论 -
arm debug 被动清除串口空闲中断
空闲中断原创 2022-12-31 16:26:29 · 243 阅读 · 0 评论 -
Keil RTX 系统函数 定义
内核信息和控制· osKernelInitialize:初始化RTOS内核。· osKernelStart:启动RTOS内核。· osKernelRunning:查询RTOS内核是否正在运行。· osKernelSysTick$ : 获取 RTOS 内核系统定时器计数器。· osKernelSysTickFrequency$ : RTOS 内核系统定时器频率,单位为Hz。· osKernelSysTickMicroSec$ : 将微秒值转换为 RTOS 内核系统定时器值。线程管理原创 2021-12-07 11:38:16 · 1624 阅读 · 0 评论 -
Keil RTE 你知道吗?会用吗?
最近在研究 Infin 的芯片, 使用的是Keil 平台编译之前用STM32 后 很久没用Keil了,都用的是 STM32IDE 顺手了,又回到Keil 开始挺不适,但是重新熟悉了几天 发现了一些新特性 之前一直没注意比如 Keil 的工程创建, 资源包管理,项目自动生成 现在已经做的很好了。RTE 是Keil 加入的一个通用接口?因为我用Keil里面的例子,都会有个RTE文件夹 ,打开里面的文件 写着 本文件自动生成 请不要改动这个我就好奇 是什么软件生成的,...原创 2021-12-06 23:53:47 · 6329 阅读 · 2 评论 -
STM32 KEIL 仿真设置
具体解决方法:在Debug选项卡将Simulation中的Dialog.dll设置为DARMSTM.DLL再将Parameter设置为你的单片机型号,例如我的是-pSTM32F103VEDARMSTM.DLL和SARMCM3.DLL都可以在keil\ARM\BIN中找到!...原创 2020-02-20 12:24:34 · 1579 阅读 · 0 评论 -
【转】STM32 定时器 输出比较模式和PWM输出模式的区别
最近在做电机控制 ,看到一篇好总结!!比较输出模式这个模式的特点是4个通道的输出周期频率是一样的.. 频率周期由 预装载寄存器 ARR 的大小确定. Cubmx中叫Counter Period … 这个值越大输出频率越低.但是这个模式有个特点是, 每个通道的初相位可以通过各通道的CCRx来确定..PWM模式波形周期频率长度由ARR确定高电平的时长由各个通道的CCRx确定.....原创 2020-02-17 13:47:33 · 3247 阅读 · 1 评论 -
FREERTOS IAP 注意事项
最近在搞STM32 IAP引导程序写好了, IAP一个裸机程序 没有任何问题,直接就更新了,可是换个FreeRTOS的程序就运行不起来,找了很多原因,终于解决了说到底,我感觉这应该是编译器的BUG或者FREERTOS 设计时没考虑到这里IAP的程序 中断向量表会整体偏移虽然keil中有设置中断向量表的地方,可是使用freertos后 就不行了最后 解决办法是给ma...原创 2019-09-19 21:33:40 · 3172 阅读 · 5 评论 -
STM32 USB IAP 调试经验
最近在搞USB IAP遇到很多坎坷,一个个坑首先是 boot引导 要做好flash 操作, 能够顺利写入flash写入失败 要注意 解锁 ,写入期间禁止访问,写入期间不要读取,修改flash 要注意地址 启动地址 以及 跳转函数删除扇区的时候要注意扇区号以及扇区的划分地址,这个请查看芯片的参考手册跳转函数的处理 不注意就会出错 ,不过这个例子网上很多...原创 2019-09-19 21:25:40 · 958 阅读 · 1 评论 -
节点偏差算法简介
简介:打印机控制器使用运动控制程序来规划每个步骤的时间。基于GRBL的运动控制器使用称为转弯结偏差的转弯算法,我将在此重点介绍。(其他固件使用一种叫做Jerk的不同算法,可能会有不同的实现 - 我不是在这里讨论Jerk。)我一直在研究结点偏差,这是我对压力补偿研究的一部分。通俗地说:- 交叉点偏差确定控制器的运动规划器看到即将到来的角落有多紧。- 加速度控制断裂和油门踏板的应用程度。...翻译 2019-07-31 00:57:36 · 747 阅读 · 0 评论 -
CAN通信 芯片 隔离
在CAN通信驱动芯片中有:PCA82C250、TJA1050、SN65HVD230、VP230几种芯片可选择,请大家谈谈选用哪种芯片比较好呢?或者还有其它更好的选择吗?PCA82C250是很早期的产品了,EMC效果不好,一般应用时要加一个共模电感.TJA1050采用自动斜率控制,使得输出具有极低的电磁辐射,同时拥有极好的输出对称性,所以即使在不加共模线圈的情况下,抗共模干扰能力也很强。高速率用T...原创 2018-04-10 11:40:52 · 13994 阅读 · 0 评论