
嵌入式
NoDistanceY
这个作者很懒,什么都没留下…
展开
-
NUCLEO-STM32H7A3ZI-Q使用说明
一、 使用说明1、测试前,需要下载最新的软件包,参见[1]2、测试例程于:STM32Cube_FW_H7_V1.8.0\Projects\NUCLEO-H7A3ZI-Q\Examples\GPIO\GPIO_IOToggle\MDK-ARM3、由于板子默认支持SMPS,不直接支持LDO,故使用STM32CubeMX生成的时钟初始化函数中,需要进行如下替换:HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);->HAL_PWREx_ConfigSupply(PW原创 2020-11-11 21:36:15 · 3824 阅读 · 2 评论 -
TM32H7-SD卡DMA方式读写的可靠性修正
文魔附主要代码,完整测试程序到参考资料[7]下载。1- SD卡的初始化 回调函数初始化 IO和时钟初始化 使用400KHz单线进行初始化(用户无需自行设置) SDMMC单元上电并适当延时 通过命令通信,确定SD卡合适的初始化方式(需要通过命令知道使用的SD卡是什么类型,需要使用怎样的)。并设置块大小。 通过用户设置的初始化结构体SD_InitTypeDef对SD卡正常读写时的速率、时钟、线宽等进原创 2020-08-07 16:05:11 · 3306 阅读 · 0 评论 -
STM32-HAL库(固件库)升级
1- HAL库为什么要升级?1、使用官方提供的新功能。2、上个版本有BUG,下个版本BUG解决了的情况是可能的。不过,上个版本没BUG,下个版本有BUG的情况是有的(微小概率时间)。2- 查看HAL库版本打开“stm32h7xx.h”,CTRL+F搜索"version"。3- HAL库获取1、通过官网获取最新HAL库[1]。2、到ARM Keil官网下载最新的软件包。[2]Keil官网经常会卡着显示不了后续内容,这时可以用下tizi,后者找别人下好的。同时,包的版本数一般原创 2020-08-06 16:33:55 · 5835 阅读 · 0 评论 -
单片机该不该用C++?
目前写个不算小的工程,用到了七八种传感器,还跑复杂的算法,发现驱动用C写,后期扩展起来挺费劲的。但目前主流单片机都是用C语言写,于是有了这个问题——单片机该不该用C++写。我想,Quora上大佬的回答Why can't C++ replace C in embedded systems? 应该还是可靠的吧。个人的总结如下,待时间去检验它的正确性吧:CPU速率大于100MHz不用考虑C+...原创 2020-02-29 20:32:52 · 7401 阅读 · 2 评论 -
Cortex-M系列:错误异常
w总线错误维基的解释为:In computing, a bus error is a fault raised by hardware, notifying an operating system (OS) that a process is trying to access memory that the CPU cannot physically address: an ...原创 2020-02-21 11:54:05 · 5220 阅读 · 0 评论 -
STM32H743 Flash
Flash用来存什么?最基本的理解:Flash用来存代码,RAM用来存数据(如堆,栈,全局变量,静态变量)。补充说明:由于Flash的非易失性,以及内存接口单元提供的电路逻辑,Flash可以用来存储敏感的信息(sensitive imformation)。稳定机制:ECC错误纠正,内置看门狗IWDG 保密/安全机制:专有代码读出保护机制,安全访问模式 提高性能:a、...原创 2020-02-20 21:50:20 · 7849 阅读 · 0 评论 -
Keil调试笔记:断点命令
如何你对单纯的通过硬件断点、在内存窗口和观察窗口下调试代码不满意的话,可以尝试一下中断命令,你可以设置进入中断的“条件”。这个“条件”可以是执行多少次后才出发中断,读写某个内存地址或地址范围时触发中断。值得一提的是,3.2节测试1和测试2显示出了Cortex-M7的六级流水微架构的特性。目录1 调试命令窗口2 BD/BL/BE/BK3 BreakSet3.1 执行断点3...原创 2020-02-08 22:37:29 · 7163 阅读 · 0 评论 -
Keil调试笔记:调试表达式(翻译)
翻译于:http://www.keil.com/support/man/docs/uv4/uv4_db_expressions.htmHome→µVision User's Guide→Expressions目录1 调试表达式2 常量2.1二进制、十进制、十六进制和八进制常量2.2 浮点常量2.3 字符常量2.4 字符串常量2.5 使用内存属性说明符3 系...翻译 2020-02-08 22:23:21 · 3151 阅读 · 0 评论 -
Cortex-M系列:在C文件中插入汇编
本文旨在阐述如何在Cortex-M系列CPU的C文件中插入汇编程序。通过观察C语言生成的汇编程序,在必要时刻知道如何写更为复杂的汇编代码。通过学习ARM工具链生成的汇编程序,可实现较高效的汇编指令学习,更重要的在于知道程序有多大的优化空间。特别地,理解数组处理方式,能更深刻地理解数组越界到底会有怎样的影响;理解文本池访问的方式,能更直观地知道常量以及const关键字在汇编中是如何体现的。本文承...原创 2020-02-05 01:17:48 · 1556 阅读 · 2 评论 -
Cortex-M系列:ARM架构与汇编指令集
本章是花费大好多功夫整理总结的,某种意义上算原创。文中大量内容是引用的,请见谅。文中比的比较仅到Armv8-M架构的Cortex-M33,没涉及后续新版本(也没法预计到)。目录1 ARM处理器分类2 基于Thumb-2技术的Thumb®指令集3 参考资料1 ARM处理器分类ARM的老产品树:1、第一级——架构:ARMv4~ARMv62、第二级——产品系列:如AR...原创 2020-02-05 00:29:35 · 4393 阅读 · 0 评论 -
Keil调试笔记:数组越界
概要:一个例子,两个思路,一些思考。问题现象struct bmm150_dev { /*! Chip Id */ uint8_t chip_id; /*! Device Id */ uint8_t dev_id; /*! SPI/I2C Interface */ enum bmm150_intf intf; /*! Bus read function pointer */...原创 2020-02-01 21:43:33 · 4386 阅读 · 0 评论 -
Cortex-M系列:中断的内在机理
在博客[2]Cortex-M系列: 软件中断和硬件中断中,主要写的是要怎么配置中断并产生中断,而本篇主要将CPU是如何识别我们的代码并运行中断,同时不破坏程序的上下文的。文中用一个例子解释了惰性压栈的原理。在发生中断嵌套时,Cortex-M处理器将使用出栈抢占、末端连锁、延迟到达等机制来优化响应速度,同时降低了功耗[6]。理解这部分原理,一方面有利于处理在中断中出现的BUG,另一方面是有利于深入理...原创 2020-01-21 13:54:48 · 4304 阅读 · 0 评论 -
Cortex-M系列: 软件中断和硬件中断
软件中断请求在逻辑上比较简单,但相关程序的解释比较少,本文将在第一部分进行讲解。硬件中断逻辑比较复杂,但网上的例程比较多。虽然我们知道怎么配置单片机的中断,但估计很多人对它的细节还不是很理解,我将在后半部分讲解,但不会涉及寄存器的操作,有关中断时的寄存器操作机理请见文献[2],我也将在后续博客中进行实例分析。文中的例子是在STM32H743单片机下进行的。目录1 软件中断1.1 目...原创 2020-01-19 23:02:06 · 4825 阅读 · 0 评论 -
Cortex-M系列:非中断、特权模式下的汇编语言
通过Keil5,在stm32H743非中断模式下,使用主堆栈指针下的汇编语句查看。理解这个汇编逻辑后,将有利于更自由的进行程序调试,查找BUG。文章涉及的汇编指令可以在工程中左侧:book→Device Data Books→Cortex-M7 Generic User Guide中查找。目录1 查看堆栈通过调试模式下的Memory窗口,可以看到:1、单片机是小端模式,...原创 2020-01-16 14:15:14 · 774 阅读 · 0 评论 -
FreeRTOS中,中断优先级设置方法
摘要FreeRTOS为了保证实时性要求严格的中断能及时响应,在屏蔽任务切换时,只屏蔽了优先级比较低的部分中断。而可被屏蔽的这些中断可以保证内核的临界区不被破坏,因此这些中断也能使用部分内核API。在这样的中断发送信号量,可以让有时序性要求较高的任务或信号量来自于外设的任务及时获取信号量并运行。本文将介绍CortxM7的相关中断寄存器,并说明如何配置FreeRTOS中与中断有关的宏。最后说明...原创 2020-01-15 13:52:06 · 2967 阅读 · 0 评论 -
一种贴片晶振异常情况,及晶振频率评估方法
在之前写的文章[1] https://blog.youkuaiyun.com/NoDistanceY/article/details/103858833中,我提及了我将NUCLEO-H743ZI2评估板进行修改,将通信芯片上25MHz的晶振换到MCU的HLE的晶振接口上。发现的现象是晶振频率变成了8M。但这里要说的是,如果出现这种现象,请直接换晶振,否则将画大量时间在时间异常的处理上。如果知道出现这种异...原创 2020-01-13 22:18:40 · 1103 阅读 · 0 评论 -
NUCLEO STM32H743购买和使用说明
摘要 STM32H743的NUCLEO板子有两种,对应不同的PCB电路,使用方式也有所不同。本文将对这两款评估板进行比较,并给出参考资料和选择建议。两款板子的资料可以在ST官网上下,分别是MB1137和MB1364。但资料有点难找,可以到我上传的资料处下载https://download.youkuaiyun.com/download/NoDistanceY/12084623。 另...原创 2020-01-06 15:59:11 · 7553 阅读 · 3 评论 -
STM32H743 RCC时钟树的形象化理解
摘要通过输入时钟和输出时钟解析STM32H743的时钟树,并为最小系统程序、PLL动态调整、CPU的外设分配、外设在低功耗模式下的运行、CPU频率的动态调整提供了参考依据。目录1 术语1.1 外设Peripherals1.2 总线bus和桥bridges1.3 锁相环PLL1.4 核心时钟 Kernel clcock1.5 RCC1.6 单词/其他2 输入时...原创 2020-01-04 18:07:28 · 6551 阅读 · 0 评论