
ARM
文章平均质量分 69
c1063891514
这个作者很懒,什么都没留下…
展开
-
map文件查看
map文件里面内容大致分为五大类(按照map文件分类的顺序):1.Section Cross References:模块、段(入口)交叉引用;2.Removing Unused input sections from the image:移除未使用的模块;3.Image Symbol Table:映射符号表;4.Memory Map of the image:内存(映射)分布;5.Image component sizes:存储组成大小。Ⅰ、Section Cross Refer原创 2021-07-11 06:43:42 · 10340 阅读 · 1 评论 -
ARM仿真器
==================================================================================================================================================原创 2021-07-08 08:38:01 · 9373 阅读 · 0 评论 -
Visual Studio Code 使用
单行注释:ctrl + /多行注释1:CTRL + K + C取消注释:CTRL+K+U多行注释2:ALT + SHIFT + A原创 2021-03-14 20:12:07 · 194 阅读 · 0 评论 -
C语言笔记之内存总结
C语言程序需要载入内存才可以运行,其不同的数据保存在不同的区域。所使用的内存可以分成两类:一类是静态存储区,另一类是动态存储区。C语言程序的存储区如下图所示:1、静态存储区静态存储区分为三类:只读数据区(RO Data)、已初始化读写数据区(RW Data)、未初始化读写读写数据区(BSS)。这三类存储区都是在程序的编译-连接阶段确定的,且运行过程中是不会变化的,只有当程序退出的时候,静态存储区的内存才会被系统回收。2、动态存储区动态存储区主要分为两类:一类是栈(Stack)原创 2021-03-11 08:42:59 · 426 阅读 · 0 评论 -
rtthread学习
RT-Thread 内核实现与应用开发实战指南1、数据类型rtdef.h 中的数据类型在裸机系统中,他们统统放在一个叫栈的地方,栈是单片机 RAM 里面一段连续的内存空间,栈的大小一般在启动文件或者链接脚本里面指定, 最后由 C 库函数_main 进行初始化。但是, 在多线程系统中,每个线程都是独立的,互不干扰的,所以要为每个线程都分配独立的栈空间,这个栈空间通常是一个预先定义好的全局数组, 也可以是动态分配的一段内存空间,但它们都存在于 RAM 中。rt_err_t rt_thr..原创 2021-03-10 21:25:31 · 1201 阅读 · 0 评论 -
嵌入式C编码规范
一般规则这里列出了最明显和最重要的一般规则。在你继续阅读其他章节之前,请仔细检查它们。 使用C99标准 不使用制表符,而是使用空格 每个缩进级别使用4个空格 在关键字和左括号之间使用一个空格 在函数名和左括号之间不要使用空格 不要在变量/函数/宏/类型中使用__或_前缀。这是为C语言本身保留的 对于严格的模块私有函数,使用prv_ name前缀 对于包含下划线_ char的变量/函数/宏/类型,只能使用小写字母 左花括号原创 2021-03-06 09:28:28 · 275 阅读 · 0 评论 -
STM32之TIM定时器
TIM1高级定时器定时器应用之PWM输出1.1 TIM1_CH1N与 TIM1_CH1 的区别定时器1,它的每一个输出通道都是成对的,即TIM1_CH1N与TIM1_CH1两个一组。TIM1是一个完整的电机控制用定时器外设,TIM1_CH1和TIM1_CH1N,用于驱动上下两个功率管。如果Deadtime为0,则 TIM1_CH1N是TIM1_CH1的反相,如果Deadtime不为0,则在TIM1_CH1N上插入了Deadtime,防止上下功率管同时导通。另外的两类管脚定义:TIM.原创 2021-02-06 11:34:00 · 4358 阅读 · 0 评论 -
rtthread学习之(4)——STM32系列驱动介绍
链接:https://gitee.com/rtthread/rt-thread/blob/gitee_master/bsp/stm32/docs/STM32%E7%B3%BB%E5%88%97%E9%A9%B1%E5%8A%A8%E4%BB%8B%E7%BB%8D.mdSTM32系列驱动介绍在 RT-Thread 实时操作系统中,各种各样的设备驱动是通过一套 I/O 设备管理框架来管理的。设备管理框架给上层应用提供了一套标准的设备操作 API,开发者通过调用这些标准设备操作 API,可以高效地完成和原创 2020-11-22 16:56:35 · 1875 阅读 · 0 评论 -
rtthread学习之(3)——STM32系列BSP外设驱动使用教程
链接:https://gitee.com/rtthread/rt-thread/blob/gitee_master/bsp/stm32/docs/STM32%E7%B3%BB%E5%88%97BSP%E5%A4%96%E8%AE%BE%E9%A9%B1%E5%8A%A8%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B.md简介本文档是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现原创 2020-11-22 16:53:54 · 1989 阅读 · 0 评论 -
rtthread学习之(1)——STM32 系列 BSP 制作教程
连接:https://gitee.com/rtthread/rt-thread/blob/gitee_master/bsp/stm32/docs/STM32%E7%B3%BB%E5%88%97BSP%E5%88%B6%E4%BD%9C%E6%95%99%E7%A8%8B.md为了让广大开发者更好、更方便地使用 BSP 进行开发,RT-Thread 开发团队重新整理了现有的 STM32 系列的 BSP,推出了新的 BSP 框架。新的 BSP 框架在易用性、移植便利性、驱动完整性、代码规范性等方面都有较大提原创 2020-11-22 16:51:32 · 2028 阅读 · 0 评论 -
rtthread学习之(2)——STM32 系列外设驱动添加指南
1. 简介本文档是为需要给现有的 STM32 BSP 添加更多外设驱动的开发者准备的。通过阅读本文,开发者可以按照自己的实际情况给现有 BSP 添加自己需要的驱动。2. 前提要求熟练使用 ENV 工具,参考:RT-Thread env 工具用户手册 熟悉 Kconfig 语法 熟悉 STM32CubeMX 工具 对 RT-Thread 设备驱动框架有一定了解3. 如何添加更多的外设驱动选项本章节以添加片上外设驱动为例,讲解如何为 BSP 添加更多可用驱动。如果想使用的片上外设是...原创 2020-11-22 16:48:44 · 3596 阅读 · 2 评论 -
STM32 备份域(备份寄存器、备份SRAM)详解及数据丢失问题处理
STM32F4提供4KB的备份SRAM,在开发程序时可以用于存储掉电不丢失的数据(需要RTC纽扣电池支持),特别是一些实时修改的,掉电不能丢失的数据,比如我用于存储雨量累计流量等实时变化的数据,定时存储到flash,实时存储到备份区(不能频繁的写flash),当备份区数据丢失了再从flash加载,否则每次都从备份区加载。然而在使用过程中发现备份区域数据丢失!下面从STM32系列芯片提供的整个备份域来看看啥情况。某些STM32芯片提供了备份SRAM,例如STM32F系列芯片有4K的备份SRAM。.原创 2020-10-31 16:23:26 · 9633 阅读 · 0 评论 -
关于RT-Thread调度器锁
RT-Thread系统开发,业务应用使用到了RT-Thread的调度器锁,因为使用不慎导致走了一部分弯路。致命的错误是,未有考虑到逻辑的执行与非执行后果,线程上锁后,逻辑条件未满足调度锁未能释放,从而导致其他线程未能获得CPU资源,出现是系统“假死”的现象。由于逻辑条件比较难重现,任务线程也及中断条件也不少,查找问题花费一部分时间。当然,最后还是发现致命的基础问题,就是调度器锁未能及时释放。作个总结。2.RTT调度器锁 调度器锁,是用于线程同步的一种方式,RT-Thread提供的调度器锁在使用时比..原创 2020-08-31 17:14:59 · 1093 阅读 · 0 评论 -
STM32唯一ID(Unique Device ID)的读取方法
每一个STM32微控制器都自带一个96位的唯一ID,也就是Unique Device ID或称为UID,这个唯一ID在任何情况下都是唯一的且不允许修改。 在开发过程中,可能需要用到这个UID,比如博主最近在研究的UAVCAN中就用到了UID。那么,这96位ID怎么读取呢?可以以字节(8位)为单位读取,也可以以半字(16位)或者全字(32位)读取。这里需要注意的是UID的首地址问题,因为不同型号的STM32芯片的首地址可能不同。在网上搜索后发现,STM32F103系列MCU的UID首地址是0x1fff..原创 2020-08-31 17:10:43 · 6833 阅读 · 2 评论 -
W25Q64Flash芯片
1、W25Q64Flash芯片介绍板上有个带SPI的FLASH产品,W25Q64,大容量64Mb的,也就是8M字节,大小:8M(Byte) (128块(Block),每块64K字节,每块16个扇区(Sector),每个扇区4K字节,每个扇区16页,每页256个 字节)特点:Flash芯片内的数据只能由1变0,不能由0变1。W25Q64FV是一款FLASH存储芯片,由32768页组成的存储芯片,其中每一页有256字节。每次最多可以一次写入256字节(一页);擦除则可以按扇区进行擦除(一..原创 2020-08-29 17:23:16 · 2155 阅读 · 0 评论 -
使用stm32裸机或者rtt系统遇到的坑
1、使用换用c8芯片不能进入main函数,会出现HardFault的诊断错误原因上次使用的芯片ram空间64k这次的是20k原创 2020-07-30 11:57:34 · 10698 阅读 · 11 评论 -
FAL (Flash Abstraction Layer) Flash 抽象层(3)
使用 FAL 的基本步骤如下所示:打开 FAL:从 Env 中打开 fal 软件包并下载到工程。 FAL 移植:定义 flash 设备、定义 flash 设备表、定义 flash 分区表。以下主要对步骤 2 展开讲解。 调用 fal_init() 初始化该库:移植完成后,可在应用层调用,如在 main 函数中调用。文件 说明 applications/main.c app 入口(fal 例程程序) ports fal 移植文件 ports/fal/fal_cfg.h原创 2020-06-18 23:50:53 · 1464 阅读 · 0 评论 -
记录RT-Thread 在 STM32 上实现 USB 虚拟串口(2)
驱动文件依赖于 BSP_USING_USBD(有的是BSP_USING_USBD_FS)这个配置项if GetDepend('RT_USING_HWCRYPTO'): src += ['drv_crypto.c'] if GetDepend(['BSP_USING_WDT']): src += ['drv_wdt.c']if GetDepend(['BSP_USING_SDIO']): src += ['drv_sdio.c']if GetDepend(['BS原创 2020-06-18 15:51:03 · 1663 阅读 · 0 评论 -
记录rtthread移植8742A(1)
选择使能以太网功能选择ping、ifconfig等特性使能lwip协议栈,目前rt-thread中支持协议栈最新的版本为2.1.0然后去在线包选择iot,主要选择ping和telnet server保存,退出,回到命令行窗口。输入命令pkg --update 等待更新包。问题没有宏定义问题因为没有复位,复位引脚配置错误...原创 2020-06-18 15:09:43 · 491 阅读 · 0 评论 -
C语言位操作
对某一位进行赋值,置0、置1、取反;整体赋值TEST = 0xff;TEST = (1<<7)TEST = (1<<7) | (1<< 3) | (1<< 2)指定与操作TEST & = 1<<7指定位清零TEST & = ~ (1 << 7)指定位置1TEST| = (1<<7)巧用C语言中的位操作方法:① 将寄存器的指定位置1或清0;任意位置1P...原创 2020-06-16 12:15:47 · 1123 阅读 · 0 评论 -
VScode使用
切换工作空间@echo offrem 放到相对的项目WorkSpace路径中。start Code.exe --user-data-dir "\WorkSpace\VSCode"rem 需要使用exit,不要使用pause继续,否则将和bat线程绑定。exit原创 2020-06-16 08:35:11 · 274 阅读 · 0 评论 -
仿真器使用注意事项
接口和指示灯说明 指示灯状态 含义 绿色,以10Hz的频率闪烁 仿真器初始化 绿色,闪烁 仿真器工作中,当一条指令执行时,指示灯临时熄灭。因此,闪烁的速度由目标板的接口速度决定,在低速接口中,指示灯关闭的周期要比高速接口的长。 绿色,常亮 ...原创 2020-04-23 08:39:53 · 6526 阅读 · 0 评论 -
STM32F1之ADC使用
目录一、使用过程中问题1、ADC数据会产生跳动解决办法:2、使用过程中ADC采集没有中间值,要么最大要么最小:二、ADC电压采集电压输入范围输入通道转换顺序触发源转换时间数据寄存器中断转换结束中断模拟看门狗中断DMA 请求电压转换三、代码使用1、adc值读取2、ADC的DMA多通道读取使用方法一、使用过程中问题1、ADC数...原创 2019-12-02 18:09:57 · 4553 阅读 · 1 评论 -
J-Link驱动安装和JLINK下载Hex程序使用说明
官下载地址:https://www.segger.com/downloads/jlink/JLink_Windows_beta.exe优快云地址:https://download.youkuaiyun.com/download/c1063891514/11989473下载完成安装:打开应用--D:\Program Files (x86)\SEGGER\JLink\JFlash.exe...原创 2019-11-22 09:01:02 · 19453 阅读 · 0 评论 -
STM32F103的IO中断
目录1、中断向量表配置2、中断引脚配置3、中断处理函数EXTI0 至 EXTI15 用于 GPIO,通过编程控制可以实现任意一个 GPIO作为 EXTI的输入源。由表 18-1 可知, EXTI0 可以通过 AFIO 的外部中断配置寄存器 1(AFIO_EXTICR1)的EXTI0[3:0]位选择配置为 PA0、 PB0、 PC0、 PD0、 PE0、 PF0、 PG0、 PH0 ...原创 2019-06-02 21:40:18 · 5916 阅读 · 0 评论 -
pid控制电机(待完善)
PID含义PID是英文单词比例(Proportion),积分(Integral),微分(Differential coefficient)的缩写。PID调节实际上是由比例、积分、微分三种调节方式组成,它们各自的作用如下:比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降...原创 2019-06-04 18:28:01 · 940 阅读 · 0 评论 -
STM单片机基础了解--野火
STM32, ST 是意法半导体, M 是 Microelectronics 的缩写, 32 表示32 位, STM32 就是指 ST 公司开发的 32 位微控制器。ARM 公司推出了其全新的基于 ARMv7 架构的 32 位 Cortex-M3微控制器内核。紧随其后, ST(意法半导体)公司就推出了基于 Cortex-M3 内核的 MCU—STM32。STM32 有很多系列,可以满...原创 2019-06-12 09:11:42 · 4929 阅读 · 0 评论 -
关于单片机时钟
机器周期:在计算机中,常把一条指令的执行过程划分为若干个阶段,每一个阶段完成一项工作。每一项工作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期。指令周期:执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。一个时钟周期 = MCLK晶振的倒数。如果MCLK是8M,则一个时钟周期为1/8us;一个机器周期 = 一个时钟周期,即...原创 2019-06-12 09:11:52 · 1466 阅读 · 0 评论 -
stm32f429
高级控制 通用定时器 TIM1 TIM8 TIM2 TIM5 TIM3 TIM4 TIM9 TIM10 TIM11 TIM12 TIM13 TIM14 CH1 PA8/PE9/PC9 PC6/PI5 PA0/PA5/PA15 PA0/PH10 PA6/P...原创 2019-06-18 15:38:21 · 1282 阅读 · 0 评论 -
STM32之野火w5500网络模块使用
1.NTP、SMTP、DNS 和 HTTPClient 访问的是外网,其中 HTTPClient 连Yeelink(云平台)的2.其他访问的是内网1、引脚初始化:a、spi初始化;/*定义SPI1作为W5500的硬件接口*/#define WIZ_SCSGPIO_Pin_4...原创 2019-08-19 15:05:46 · 5061 阅读 · 0 评论 -
华大单片机使用笔记HC32F030&HC32F005待完
1、熟悉使用stm32的,使用此单片机也是比较简单的。也类似与新塘单片机的使用。不用多熟悉这种单片机的配置之类的。直接复制例子中的设置。用到哪些外设,先单独试试例子中的然后直接复制到工程里面。其余的就是执行逻辑问题。2、资料都在这里面:ftp://HdscCustomer:HdscGuest2019!@180.168.214.142库、例子、编译pack包等等里面都可以下载。3...原创 2019-09-19 17:13:08 · 5128 阅读 · 0 评论 -
STM32F429IGT6管脚汇总
171 PDR_ON 6 VBAT 15 VDD 23 VDD 36 VDD 149 VDD 49 VDD 62 VDD 72 VDD 114 VDD 82 VDD 159 VDD 172 VDD 127 VDD 91 VDD 103 VDD...转载 2018-08-05 16:16:09 · 13069 阅读 · 0 评论 -
STM32F103的PWM电机控制
目录选择TIM5CH21、GPIO配置输出2、定时器配置3、调用函数使用初次易错点:使用pwm输出是首先要看,那个引脚使用可以使用pwm输出。高级控制和通用定时器通道引脚分布: 高级定时器 通用定时器 TIM1 TIM8 TIM2 TIM5 TIM3 TIM4 CH1 PA8/PE9 PC6 PA...原创 2019-06-02 21:20:08 · 16606 阅读 · 2 评论 -
i2c总线基础知识
目录1、I2C 协议简介2、I2C 物理层3、协议(仲裁,地址广播是什么鬼?)a、2C 基本读写过程(有问题?都怎么读,写怎么写)b、通讯的起始和停止信号c、数据有效性d、地址及数据方向e、响应STM32 的 I2C 特性及架构使用软件模拟硬件协议1、I2C 协议简介STM32 的 I2C 外设可用作通讯...原创 2019-05-29 19:48:57 · 1824 阅读 · 0 评论 -
IAR的一些常用设置
设置生成map文件解决步骤原创 2018-08-17 18:23:38 · 1493 阅读 · 0 评论 -
STM32F429之 嵌套向量中断控制器NVIC
外部中断/事件控制器由20个产生事件/中断请求的边沿检测器组成,对于其它产品,则有19个能产生事件/中断请求的边沿检测器。每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以独立地被屏蔽。挂起寄存器保持着状态线的中断请求。主要特性EXTI控制器的主要特性如下:● 每个中断/事件都有独立的触发和屏蔽● 每个中断线都有专...原创 2018-08-08 14:30:15 · 1605 阅读 · 0 评论 -
STM32介绍
目录STM32 分类STM8 和 STM32 分类STM32 命名方法STM32F103RCT6寻找 IO 的功能存储器映射存储器 Block0 内部区域功能划分存储器 Block1 内部区域功能划分存储器 Block2 内部区域功能划分寄存器映射stm32f10x_it.c、 stm32f10x_conf.h 和 system_stm32f10x...原创 2018-08-14 15:19:24 · 25538 阅读 · 1 评论 -
IAR 查看编译后一些详细信息
可执行程序产生流程:源文件->预处理器->编译器->链接器->可执行目标文件/////////////////////////预处理器(preprocessor):执行以#开头的指令,预处理器可以删除注释,包含其他文件以及执行宏(宏macro是一段重复文字的简短描写)替代.类似于编辑器,可以给程序添加内容,也可以进行修改.编译器(compiler):将程序翻译成...原创 2018-08-14 11:33:04 · 8301 阅读 · 0 评论 -
射频卡的使用
操作程序主要包括:初始化函数,寻卡,防冲突,选卡,转换密钥,传送密钥,验证密钥简称三轮认证,关闭打开天线,钱包冲值等函数。RFID(radio frequency identification)是利用无线电波进行通信的一种自动识别技术。基本原理是通过读头和黏附在物体上的标签之间的电磁耦合或电感耦合进行数据通信,以达到对标签物品的自动识别。自动识别是指应用一定的识别装置,通过被识别物品和识别装置...原创 2018-08-06 16:52:29 · 4417 阅读 · 0 评论 -
STM32F429之SysTick系统定时器
野火例子因为 SysTick 属于内核外设,跟普通外设的中断优先级有些区别,并没有抢占优先级和子优先级的说法。滴答定时器优先级也是可以设置的同样受NVIC控制。SysTick_Config()库函数主要配置了 SysTick 中的三个寄存器: LOAD、 VAL 和 CTRL。其中还调用了固件库函数 NVIC_SetPriority()来配置系统定时器的中断优先级,该库函数也在 core_...原创 2018-08-14 09:52:46 · 2747 阅读 · 0 评论