嵌入式经验
文章平均质量分 77
AT89C51
arize
圣雄肝帝
展开
-
嵌入式--->STM32H7系列DMA寄存器详解
在参考手册中已经有每个GPDMA寄存器的详细解释,这里做以翻译和调用过程的讲述,仅记录了解到的寄存器,并不全面,仅仅是为了方便查阅。原创 2024-08-06 17:56:23 · 294 阅读 · 0 评论 -
嵌入式--->ICache DCache
ICache用来缓存指令,目前icache的一切都是自动的,不需要我们去做什么。我们只需要打开或者关闭icache。DCache用来缓存数据,dcache用的前提是mmu要启动。原创 2023-01-17 14:32:33 · 546 阅读 · 1 评论 -
嵌入式---->Arm gcc 编译参数,
本篇文章基于mingw32-make.exe来执行编译Cortex-Arm4内核的工程来编写和测试的,环境Windows10 😄文章目录前提准备具体参数参数表参数用例可执行程序的大小优化参考前提准备对Makefile有一定的使用经验,阅读本文章至少要对makefile语法有了解程度Windows 下使用 Mingw32-make 来执行 Makefile示例GCC是什么具体参数参数表参数项功能notes-ffunction-sections-fdata.原创 2022-03-15 13:42:20 · 841 阅读 · 0 评论 -
CubeMx--->踩坑记录
文章目录时钟配置1.时钟树晶振问题2.[时钟源的选择](https://www.cnblogs.com/niu-li/p/11172052.html)时钟配置1.时钟树晶振问题现象及分析卡住在 (HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE ,这里查看是否在SysTick_Handler中调用累加计数器处理在CubeMx中时钟树的配置出了问题,其中HSE的值是根据所提供的晶振来设置的,是写死的比如下图中的25MHZ是因为硬件晶振就是25原创 2022-03-09 09:41:46 · 1757 阅读 · 0 评论 -
嵌入式--->wolfSSL移植
>wolfSSL可以理解为是轻量级的OpenSSL,十分适用于嵌入式>wolfSSL手动移植教程两个,STM32F767(正点原子Apllo板子)/GD32450i-EVAL(兆易的板子)>如有差错与疑问欢迎留言:cat:原创 2022-03-08 14:54:50 · 3349 阅读 · 1 评论 -
嵌入式通信--->QSPI
QSPI原创 2022-02-28 13:09:39 · 2330 阅读 · 0 评论 -
FreeRTOS--->总结笔记
度娘已经有很好的概述了点击跳转😄😏但是不够详细深度,这里就个人认知做浅显的总结本文适合移植并使用过一段时间FreeRTOS但是还不太了解的同学🐱文章目录笼统的说笼统的说FreeRTOS是一个小型的广泛被使用于嵌入式的一个五脏俱全的实时操作系统。task通过PCB(Process Control Block)控制使用双向链表实现任务调度机制,从高优先级到低优先级遍历找到需要执行的task,若有多个task具有相同优先级则轮流执行。vTaskDelay()延时发生将task移入等待链表.原创 2022-02-23 10:51:24 · 493 阅读 · 0 评论 -
LWIP--->总结笔记
LWIP百度词条跳转文章目录LWIP简介LWIP的三种APIRAW APIlwip APIBSD APILWIP简介LWIP是一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,所以很适合使用于嵌入式系统中LWIP的三种APIRAW APIRAW API把协议栈和应用程序放到一个进程里边,该接口基于函数回调技术,使用该接口的应用程序可以不用进行连续操作。不过,这会使应用程序编写难度加大且代码不易被理解。为了接收数据,应用程序会向协议栈注册.原创 2022-02-11 17:29:15 · 861 阅读 · 0 评论 -
FreeRTOS---->关键API总结,任务调度,内核控制
文章目录任务调度xTaskCreatexTaskCreateStatic内核控制函数任务调度函数描述详解xTaskCreate()使用动态的方法创建一个任务xTaskCreateStatic()使用静态的方法创建一个任务xTaskCreateRestricted()创建一个shiyongMPU进行限制的任务,相关内存使用动态内存分配xTaskDelete()删除一个任务xTaskCreate返回值为pdPASS,失败返回NULLBas.原创 2022-01-21 15:24:07 · 462 阅读 · 0 评论 -
嵌入式--->调试时程序卡死在 LDR PC, DAbt_Addr
MCU:LPC2148内核:ARM7现象程序打了断点后,调试一段再运行起来之后卡死在LDR PC, DAbt_Addr; Exception Vectors; Mapped to Address 0.; Absolute addressing mode must be used.; Dummy Handlers are implemented as infinite loops which can be modified.Vectors LDR PC, Re.原创 2022-01-12 13:14:06 · 651 阅读 · 0 评论 -
嵌入式基础知识--->硬件篇
文章目录MOS管MOS管原创 2021-12-27 10:09:28 · 2514 阅读 · 0 评论 -
CubeMx-->STM32工程移植时出现error: #20: identifier “HAL_StatusTypeDef“ is undefined 的问题
error: #20: identifier “HAL_StatusTypeDef” is undefined可以导航到,但是编译报错Error: L6218E: Undefined symbol HAL_ADC_ConfigChannel (referred from h_adc.o).等问题出现时,是一个原因1. 问题原因因为我们使用CubeMX生成工程,在生成工程时会自动配置stm32f7xx_hal_conf_template.h,屏蔽了一些HAL库,导致一部分HAL库被宏定义屏蔽了,我.原创 2021-12-20 15:10:29 · 1889 阅读 · 0 评论 -
嵌入式--->内存管理
STM32F7 虚拟映射了4G的可访问内存文章目录参考链接参考链接STM32 内存分配解析及变量的存储位置原创 2021-12-15 13:59:54 · 883 阅读 · 0 评论 -
STM32F7-->USART串口通信
对USART有了一定的了解,在此总结文章目录RxTxRxTx使用Tx有两个相关寄存器,TDR和移位寄存器需要有一些基础认识:TXE是TDR为空判断标志位,TC是移位寄存器发送完成标志位当TDR寄存器为空,硬件会将TXE位置1,这个位需要手动置0;当移位寄存器发送完成,硬件会将TC位置1,这个位需要手动置0只用往TDR寄存器中放数据就好了,其他都是自动的,然后根据TXE和TC标志位判断下次数据是否可以往TDR放了梳理一下简单的发送步骤:TDR一开始是空的,TDR为空的判断标志.原创 2021-12-15 11:25:57 · 1109 阅读 · 0 评论 -
嵌入式--->LWIP
LWIP是一个小型开源的TCP/IP协议栈,LWIP是轻量级的IP协议,有无操作系统都可以运行,并且占用极少的RAM和ROM即可运行主要特性ARP协议以太网地址解析协议IP协议包括IPv4和IPv6,支持IP分装与重装,支持多网络接口下数据转发ICMP协议用于网络调试与维护IGMP协议用于网络组管理,可以实现多播数据的接收UDP协议用户数据报协议TCP协议支持TCP拥塞控制,RTT估计,快速恢复与重传等提供三种编程接口方式raw/callback API、sequenti.原创 2021-09-09 15:58:03 · 176 阅读 · 0 评论 -
STM32F7--->Internal Flash
STM32F767IGT6D的FLASH大小为1MB文章目录Flash闪存模块闪存的读取闪存的编程和擦除STM32F767的标准编程步骤Flash闪存模块模块组织表如上,可见STM32F767IGT6由:主存储器、系统存储器、OPT区域、选项字节4部分组成。STM32F767的Flash访问路径有两条:AXIM和ICTM,一般使用AXIM接口访问Falsh,其其实地址为0X08000000主存储器存放代码和数据常量(const常量数据)。它可以分为1个Bank(默认)和2个Ban.原创 2021-09-06 17:41:22 · 1010 阅读 · 0 评论 -
STM32F7--->QSPI
QSPI即Quad SPI(四线SPI),几种SPI的区别详见参考文章目录QSPI 介绍工作模式QSPI特点F7的QSPI闪存映射模式接口框图QSPI命令序列(与FLASH的通信)指令阶段地址阶段交替字节(复用字节)阶段空指令周期阶在空指令周期阶段,在给定的数据阶段间接模式QSPI的使用QSPI初始化步骤1.开启QSPI接口和相关时钟,设置IO的复用功能2.设置QSPI相关参数QSPI 介绍工作模式QSPI是一种专用的通信接口,可连接单、双或四(条数据线)SPI FLASH存储器。STM32F.原创 2021-08-31 15:57:35 · 1811 阅读 · 0 评论 -
嵌入式--->多种通信方式,概述UART,IIC,SPI
本篇文章是基于STM32F767的学习总结文章目录通讯方式分类典型通信方式概述串口通信IICSPI附录参考链接通讯方式分类从物理结构来看:通信方式分为并行通信与串行通信两种方式,串行只用到一根线即可,并行需要8根从工作方式来看:全双工:可同时收发数据半双工:不可同时收发数据,可分时收发数据单工:任何时刻只能往某一个固定方向传输数据从是否公共用时钟信号来看:同步通信:两设备公用同一个时钟信号,数据信号所传输 的内容绝大部分就是有效数据,效率高异步通信:两设备之间只有数据信号没有时钟信.原创 2021-08-12 17:30:24 · 2043 阅读 · 3 评论 -
STM32F7--->FMC(可变存储控制器) Flexible Memory Controller
FMC可变存储控制器概述框图主要用途外部期间地址映射概述FMC功能块可连接:同步/异步静态存储器-------SRAM、DRAMNAN Flash--------------------NOR Flash、OneNAND FlashSDRAM存储器---------------SDRAM所有外部存储器共享地址、数据和控制信号,但有自己的片选信号。FMC一次只能访问一个外部器件框图主要用途将AHB数据通信事务转换为适当的外部器件协议满足外部存储器件的访问时间要求外部期间原创 2021-08-06 13:57:11 · 1641 阅读 · 0 评论 -
STM32F7--->SDRAM
文章目录SDRAMSDRAM信号线存储单元存储结构数据传输控制命令空操作命令激活命令读写命令预充电命令刷新命令设置模式寄存器命令初始化写操作读操作FMC接口驱动SDRAM附录交代声明SDRAMSDRAM英文名是 Synchronous Dynamic Random Access Memory ,即同步动态随机存储器,相较于 SRAM(静态存储器) SDRAM 具有:容量大和价格便宜的特点。STM32F767 支持 SDRAM ,我们可以外挂 SDRAM ,从而大大降低外扩内存的成本,如下SDRAM原创 2021-08-06 11:34:25 · 1930 阅读 · 0 评论 -
嵌入式--->总目录
嵌入式通用知识驱动相关FreeRTOSLWIP编译环境C51Keil MDK不同厂家的芯片STM32 H7NXP LPC2xxx系列。原创 2021-07-26 10:14:18 · 903 阅读 · 1 评论 -
STM32F7--->使用LTDC接口驱动RGBLCD,并使用DMA2D图形加速
文章目录基础知识简介RGBLCD1.RGBLCD的信号2.RGBLCD驱动模式LTDC1.信号线2.图像处理单元3.AHB 接口4.LTDC相关寄存器及使用方法LTCD全局控制寄存器 LTCD_GCRLTCD同步大小寄存器 LTDC_SSCRLTDC有效宽度配置寄存器 LTDC_AWCRLTDC 总宽度配置寄存器 LTDC_TWCRLTDC 背景色配置寄存器 LTDC_BCCRLTDC 的层颜色帧缓冲区地址寄存器 LTDC_LxCFBAR(x=1/2)LTDC 的层像素格式配置寄存器 LTDC_LxPF原创 2021-07-20 18:15:43 · 3720 阅读 · 4 评论 -
STM32F767--->基础知识
文章目录GPIOGPIOIO数量:STM32F7 最多有 9 组 IO,分别用大写字母表示,即 x=A/B/C/D/E/F/G/H/I,每组IO有16个管脚包含的寄存器:STM32F7 每组 IO 有 10 个 32 位寄存器控制,其中常用的有 4 个配置寄存器+2 个数据寄存器+2 个复用功能选择寄存器,共 8 个STM32F7 每组通用 I/O 端口包括 4 个 32 位配置寄存器(MODER、OTYPER、OSPEEDR 和 PUPDR)、2 个 32 位数据寄存器(IDR 和 ODR)、1原创 2021-07-16 11:00:26 · 4012 阅读 · 1 评论 -
嵌入式--->ceeding(UT嵌入式自动化测试工具),使用过程详解(保姆级)
文章目录搭建环境1.安装Ruby2.安装Ceeding3.安装gcc搭建环境1.安装Ruby在https://rubyinstaller.org/上下载安装Ruby并将其bin路径添加到系统环境变量PATH中,而后开启命令窗口使用ruby -v #检测是否安装成功2.安装Ceedingceedling是在ruby gem镜像源中的一个软件,我们打开命令窗口输入一下指令来在ruby的安装路径中添加ceedling组件。gem install ceedling3.安装gcc为了在windo原创 2021-07-12 11:04:07 · 6170 阅读 · 8 评论 -
Modbus--->使用ModbusPoll、ModbusSlave、虚拟串口分析MODBUS-RTU数据帧格式、报文实例帧结构,和Modbus协议格式
文章目录使用Modbus poll&Modbus slave模拟Modbus主从通信虚拟串口基础知识积累MODBUS-RTU报文模型主机对从机写数据操作主机对从机写数据操作后,从机的返回内容主机对从机读数据操作主机对从机读数据操作后,从机对主机返回内容Modbus-RTU常用功能码寄存器起始地址(起始数据地址)使用Modbus poll&Modbus slave模拟Modbus主从通信 下载和破解搜一下都很方便,使用的时候Modbus Poll作为Master,Modbus slave作原创 2021-07-06 16:58:17 · 3289 阅读 · 0 评论 -
嵌入式--->Modbus
文章目录Modbus定义协议数据单元(PDU)访问Modbus和Modbus数据模型中的数据数据模型寻址数据寻址范围数据地址起始值大数据类型位访问数据字节顺序字符串Modbus PDU应用数据单元(ADU)TCP/IP&ADURTU&ADUASCII&ADUModbus定义Modbus是使用主从关系实现的请求-响应协议。在主从关系中,通信总是成对发生:一个设备必须发起请求,然后等待响原创 2021-07-05 17:27:43 · 3105 阅读 · 3 评论 -
STM32F7--->串口相关,串口的所有寄存器详讲
文章目录串口相关寄存器串口控制寄存器CR1CR2外设时钟使能寄存器APB2ENR串口波特率设置寄存器USART_BRR相关中断串口相关寄存器串口控制寄存器STM32F767 的每个串口都有 3 个控制寄存器 USART_CR1~3,串口的很多配置都是通过这 3 个寄存器来设置的。CR1位名称功能详细介绍使用时注意事项31~29保留位必须保持复位值28M1确定字长此位和12位(M0)用于确定字长度,由软件置1或清零M[1:0] = 00:1 个起始位原创 2021-07-02 11:02:57 · 9121 阅读 · 2 评论 -
STM32F767--->DMA
文章目录定义定义 DMA: Direct Memory Access,即直接存储器访问。 DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路,能使 CPU 的效率大为提高。 STM32F767 最多有 2 个 DMA 控制器(DMA1 和 DMA2),共 16 个数据流(每个控制器 8 个),每一个 DMA 控制器都用于管理一个或多个外设的存储器访问请求。每个数据流总共可以有多达8 个通道(或称请求原创 2021-06-29 17:18:53 · 358 阅读 · 0 评论 -
STM32F767--->看门狗
WATCHDOG在系统起到非常重要的作用,相当于系统警察,当系统发生严重错误(如程序进入死循环等)不能 恢复的时候,WATCHDOG能够让系统重启。WATCHDOG的应用主要是在嵌入式操作系统中,避免了系统在无人干预时长时间挂起的情况。文章目录独立看门狗(IWDG)相关寄存器键值寄存器 IWDG_KRIWDG_PR 和 IWDG_RLR分频寄存器 IWDG_PR窗口看门狗(WWDG)独立看门狗(IWDG)STM32F767 的独立看门狗由内部专门的 32Khz 低速时钟(LSI)驱动,即使主时钟发.原创 2021-06-29 10:35:56 · 500 阅读 · 0 评论 -
嵌入式--->异常,中断
文章目录定时器中断外部中断(EXIT)概念与介绍使用的介绍使能IO时钟&基本配置中断优先级(NVIC)中断服务函数编写中断处理的回调函数HAL_GPIO_EXTI_Callback相关概念事件、中断事件、中断定时器中断外部中断(EXIT)概念与介绍STM32F7 的每个 IO 都可以作为外部中断的中断输入口,STM32F7 的中断控制器支持 22 个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F7的 23 个外部中断为:端口对应中断原创 2021-06-28 13:59:49 · 1116 阅读 · 1 评论 -
STM32F767--->串口通信接收不定长数据的处理方法
文章目录超时判断空闲中断超时判断空闲中断 空闲中断:就是说每接收到一条完整的数据就会置位空闲标志位,我们只需要判断空闲标志位是否置一,就能知道是不是接收到了一条完整的数据。用空闲中断的好处就是,对于以前我写程序通信都会在数据的后面加上尾(/n什么的),然后另一个接收的单片机通过判断数据的尾来确定是不是一条完整的数据,有了空闲中断就不需要在给数据加上尾了...原创 2021-06-24 17:51:31 · 2281 阅读 · 2 评论 -
STM32F767--->时钟
加粗样式在配置STM32外设的时候,任何时候都要先使能该外设的时钟原创 2021-06-24 13:15:39 · 438 阅读 · 0 评论 -
STM32F767--->寄存器
文章目录IO 配置常用的 8 个寄存器MODEROTYPEROSPEEDRPUPDRODRBSRRIDRAFRH & AFRLIO 配置常用的 8 个寄存器MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR 、AFRH 和 AFRL。MODER MODER 寄存器,该寄存器是 GPIO 端口模式控制寄存器,用于控制 GPIOx(STM32F7 最多有 9 组 IO,分别用大写字母表示,即 x=A/B/C/D/E/F/G/H/I,下同)的工作模式,OTYPER OTY原创 2021-06-24 10:49:15 · 1487 阅读 · 1 评论 -
STM32F767串口通信学习笔记
STM32F767的串口使用,需要先开启串口时钟,再设置对应的IO模式,然后配置一下波特率,数据位长度,奇偶校验位信息就可以使用了。1.串口时钟使能串口作为STM32F767的一个外设,其时钟由外设时钟使能寄存器控制,选择串口1,它在APB2ENR寄存器的第四位(串口1与串口6的时钟使能在APB2ENR,其他串口的时钟使能都在APB1ENR)寄存器2.串口波特率设置每个串口都有自己独立的波特率寄存器USART_BRR,通过设置该寄存器就可以达到配置不同波特率的目的。3.串口控制STM32F7.原创 2021-06-23 17:20:16 · 1354 阅读 · 1 评论 -
嵌入式基础知识
文章目录通信协议modbus通信协议modbusModbus是一种串行通信协议,是工业电子设备之间常用的连接方式。Modbus协议是一个master/slave架构的协议。有一个节点是master节点,其他使用Modbus协议参与通信的节点是slave节点。每一个slave设备都有一个唯一的地址。在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令)。一个ModBus命令包含了打算执行的设备的M原创 2021-06-21 17:57:03 · 870 阅读 · 0 评论 -
protues,元器件查找对照表,使用时的一些经验积累
名称检索电阻RES电容CAP晶振CRYSTAL原创 2020-05-16 22:58:58 · 788 阅读 · 0 评论 -
C51---简单使用,闪烁灯,keil中使用头文件
使用keil_C51进行程序编写,C语言需要选择使用启动文件,程序编写完成生成hex文件进行烧录 #include<reg51.h> sbit LED1=P2^0; //定义引脚 void delay(unsigned int a); //延时函数 void main() { while(1) { LED1=0; delay(3); LED1=1; delay(3); } } void delay(unsigned .原创 2020-05-14 14:54:25 · 864 阅读 · 0 评论 -
C51---STC89C52引脚及其简要功能,烧录及烧录时遇到的问题
一共有40个引脚,可以分为电源、时钟、控制和I/O引脚。原创 2020-03-30 20:56:16 · 6810 阅读 · 3 评论