
嵌入式/stm32
文章平均质量分 88
liming0931
不积小流,无以成江海
展开
-
为什么航天器、导弹喜欢用单片机,而不是嵌入式系统?——比较不错的文章
原创道哥IOT物联网小镇前天收录于话题#所有文章37#嵌入式开发21#操作系统1#应用程序开发19道哥的第 029 篇原创 一、前言 二、关于单片机与嵌入式系统之间界定 1. 单片机 2.嵌入式系统 3. 嵌入式 Linux 三、非实时、软实时、硬实时 四、x86 Linux 系统的调度策略 1. 为什么 Linux 系统是软实时? 2. Linux 系统...转载 2021-03-18 08:42:39 · 519 阅读 · 0 评论 -
驱动库分享整理(1)——用于单片机中的小巧多功能按键支持库
按键在嵌入式开发中,是比较重要的,也是常见的外设,因此,很有必要学习,同事也要掌握编写基础的按摩驱动,通常情况下,最基本的情况下,都是使用状态机的框架来出来,因为尽管硬件电路上有滤波电路,但还是要软件滤波的。(软件滤波很多采集系统中都是用到的)。在学习过程中,可以自己尝试编写简单的单机,组合按键单机等,锻炼思维。当然网上有很多的按键驱动库,值得收藏,其中思想是比较好的,可以学习其思路,同事也可以在了解功能后,移植到自己的项目中。我这里就自己网上看到的,公众号分享的一些文章,特意整理一下,算是一个收集,原创 2021-02-13 11:22:58 · 2076 阅读 · 3 评论 -
mdk平台下,cm3内核单片机使用event recorder,测试函数运行时间及printf打印
1、最好使用比较新的cmsis库,否则添加event recorder将无法编译通过2、rte设置如下:3、sct文件开辟一个NOINIT的sram区域,不开辟好像也可以,官网教程是开辟的。4、初始化,记得添加头文件void event_record_init(void){ EventRecorderInitialize(EventRecordAll, 1U); EventRecorderStart();}5、添加测试时间代码,如下所示实例,2也可以去0-4,原创 2020-12-23 16:26:55 · 1056 阅读 · 0 评论 -
stm32F1 SCB->VTOR开机默认是0,如何理解?
1.使用stm32cubemx生成新的f1工程,SystemInit函数中默认没有设置SCB->VTOR,则SCB->VTOR默认为0,程序正常运行。2.在设计IAP的时候,为社么在app程序中需要设置SCB->VTOR,而bootloader中不需要?3.程序的SCB->VTOR = 0x0800 0000 | offset;4.那么对于bootloader来说,只是offset = 0而已,为什么连0x0800 0000都可以不设了呢?5.想请教各位大佬,这个应该怎么理解原创 2020-12-22 10:52:50 · 6443 阅读 · 0 评论 -
基于stm32f103ze hal库的内部flash磨损均衡算法的实现与测试
stm32f103ze是大容量的芯片,每个page2k字节,每次至少写2字节,即2*n字节数量,通常情况下,写入数据都是1->0,而不能0->1,因为这个是flash的特向决定的,如果是0->1的操作,那么必须要整个page擦除,这个和eeprom是不一样的, eeprom是可以按字节进行读写的,当时容量没有flash大,因此各有利弊。通常,stm32flash可以来保存一些数据,可行方案有在固定的地址中,写入数据,每次写入数据,都要将原有的数据保存到sram中,然后加上新的数据,执原创 2020-11-14 12:29:25 · 1100 阅读 · 0 评论 -
小议ARM Cortex-m0/m4系列的总线差异
下面的一段话来自http://bbs.eeworld.com.cn/thread-1068770-1-1.html,讲述的挺详细的,我认为非常好,因此,都转载下:从一个简单问题说起:STM32的GPIO翻转速度(比如用来模拟时序)最快能多快?写段代码测试一下:void test(void) { for(;;) { GPIOA->ODR = (1<<5); GPI...转载 2020-11-09 22:33:26 · 2168 阅读 · 1 评论 -
spi英文资料
https://www.analog.com/en/analog-dialogue/articles/introduction-to-spi-interface.html图文并茂,强烈推荐,spi看这个文章就够了。原创 2020-11-06 09:59:05 · 336 阅读 · 0 评论 -
比较好的I2C的英文学习网站
英文好的,直接看英文,不好的,浏览器翻译下。写的还不错,学到了很多书本上没有的,另外可以翻看nxp的spec,比较nxp是iic的专利所有者。https://i2c.info/https://aticleworld.com/i2c-bus-protocol-and-interface/...原创 2020-11-06 09:45:09 · 224 阅读 · 0 评论 -
类linux驱动模块框架module_init(init_fun)在STM32上的实现
原文:https://zhuanlan.zhihu.com/p/81309285设计思想利用编译器的特性,在程序编译时将各模块初始化函数顺序存放到内存的指定地址,然后在程序运行时main函数从这块内存区域中 依次调用各模块的初始化函数,自动完成各个模块的初始化工作,同时增强了程序的高内聚低耦合特性,提高了软件的质量。试验环境工具链:Keil5 开发板:STM32F103ZE1. 修改链接脚本修改链接脚本的目的是:在STM32的内存中,留出一块合适的大小(大小根据自己的需求调整), 用转载 2020-10-31 20:50:00 · 540 阅读 · 0 评论 -
RTT笔记-分析自动初始化机制
原文:https://www.jianshu.com/p/9d377ddc8acc首先全局搜索一个任意的自启动宏,便能找到在rtdef.h中由如下定义#define INIT_BOARD_EXPORT(fn) INIT_EXPORT(fn, "1")/* pre/device/component/env/app init routines will be called in init_thread *//* components pre-initialization转载 2020-10-31 14:38:58 · 895 阅读 · 0 评论 -
Cortex-M3/M4与Cortex-M0/M0+架构IAP过程区别
Cortex-M3/M4与M0架构IAP过程简单总结Cortex-M3/M4架构下的IAP Cortex-M0架构下的IAP Cortex-M0+架构区别 这个文章比较不错,因此特意转载:https://blog.youkuaiyun.com/hackercircle/article/details/91127598,很多细节可以到库函数中去验证,这样会更加深刻。同时看看权威指南,内核的东西还是arm的文档比较权威,当然芯片商家也会有部分的内核说明,因此,相互结合起来就比较好了。本文主要侧重Corte转载 2020-10-30 12:32:24 · 1480 阅读 · 0 评论 -
有关于stm32 cotex m0 系列的iap升级
最近在搞stm32的在线升级,网上资料也是挺多的。看了好多文档之后总算是理解了。现在自己再整理一遍。个人觉得,如果要做IAP的话,首先得知道一些基础。1、cotex m系列都是支持程序在flash里面运行的,里面由几个特别寄存器用来存sp(栈指针)和cp(程序跳转指针)。(程序跳转的时候需要用到)2、cotex m 系统当发生硬件中断的时候,cp指针会被强制切换到(0x800 0004)flash里面的复位地址中,然后根据中断号进行指针偏移,这些中断入口的在启动文件(startup_stm32f转载 2020-10-29 15:29:29 · 464 阅读 · 0 评论 -
如何使用sct文件、icf文件来定位不同的内存存储变量(cortex-m3平台)keil+iar
好久没写博客了,快到国庆了,经历了一些项目和坑,还是要保持记录的好习惯,好记性不如烂笔头嘛。 目前使用了cortex-m3内核的两款单片机:stm32f1和lpc1768的,虽说是cm3内核,但是两个芯片添加的外设是有区别的,很多外设的使用方式也是各有千秋,st在国内比较火,全国研讨会如火如荼,每年都有。lpc1768是属于NXP半导体,前身是飞利浦半导体,也算是老牌的半导体公司,相比较stm32,国内入门的论坛没有stm32火爆,但我相信质量过得去。 两款单片机都是比较老了,st...原创 2020-09-30 16:56:23 · 821 阅读 · 0 评论 -
Cortex‐M3权威指南第一遍阅读后的记录
这本书,买了很久,到现在算是大致浏览了一边,还是非常有收获的,以前都是直接看的芯片的手册,但是芯片手册在内核当中,讲述的知识点是比较少的,因此相互结合的看,很有必要。这里就自己想到什么就整理什么,肯定有遗漏的,以后有机会看第二遍,再完善。1 双堆栈的特点,MSP、PSP,看着有点迷糊,两者物理地址是一样,主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程)。这个用于操作系统的任务切换,中断处理等用途。 进程堆栈指针(PSP):由用户的应用程序代...原创 2020-08-04 14:38:15 · 373 阅读 · 0 评论 -
TrueSTUDIO for stm32配置小技巧
最近一直在使用STM32CubeMX和TrueSTUDIO进行STM32的程序开发,用起来已经是得心应手了。使用TrueSTUDIO的过程中知道了一些环境设置的小技巧,可以提高工作效率过减少问题,故专门贴出来。TrueSTUDIO的环境设置主要是在项目的属性设置对话框里进行设置。(1)使用并行编译在C/C++ Build的Behavior设置页面,勾选Enable parallel b...原创 2020-04-21 14:56:17 · 655 阅读 · 0 评论 -
Embitz完全免费的开发环境
New Embitz 2.0 is coming soon, highlights:Hotplug menu, connect running target without stopping (and inspect with live variables and OS tools)New debug interface engine with flash erase and program...原创 2020-04-20 09:01:57 · 2221 阅读 · 0 评论 -
printf调试打印方法总结一
平台:stm32,可以推广到其他32位单片机中开发软件:keil、IAR、SEGGER Embedded Studio for ARM调试仿真器:stlink、jlink说明:1、串口打印,不推荐,需要占用串口外设不划算2、在线调试中的rtt打印方式,需要keil进入调试模式,在打开rtt,viwer即可...原创 2020-04-07 13:47:33 · 666 阅读 · 0 评论 -
stm32如何才能正常运行的调试笔记
想使用野火或者安福来的代码模板来学习这个stm32,毕竟他买使用量挺多的,代码风格尤其是安福来比较好,因此想试试他们的工程,但是弄了好长一段时间,单片机就是不能运行,进入debug,就死机,停在硬件错误或其他地方。后来想想,真是低级错误导致的,因此整理一下。今后遇到不能正常运行的情况下,先冷静下来思考而不是盲目的改代码。1、单片机能否下载,能否调试,验证启动引脚boot0、boo...原创 2020-03-31 10:26:23 · 805 阅读 · 0 评论 -
巧用c语言数组来操作数字逻辑电路
这个算是开发中的小技巧了,也不知道如何起标题。通常为了节省单片机的引脚,我我们同城会使用比较多的数字电路来扩展,比如74hc574的D触发器,74ls138的38译码器,3态八路缓冲器/线路驱动器74hc541,还有就是串进并出的74hc595.当然还有与非门、与门、或门等等最基本的数字逻辑电路来构成gpio的扩展。数字电路的扩展的理解:这里有两点比较值得注意的,1、很多时...原创 2020-02-26 20:58:17 · 981 阅读 · 0 评论 -
STM32堆栈空间大小设置
1. 设置堆栈空间大小在使用STM32编程时,一般情况下我们不会关注堆栈空间的大小,因为在STM32的启动文件中,已经帮我们预先设置好了堆栈空间的大小。如下图所示的启动代码中,Stack栈的大小为:0x400(1024Byte),Heap堆的大小为:0x200(512Byte)。这也是为什么一个基础的工程编译后,RAM的空间也占用了1.6K左右的原因,因为堆栈的空间均分配在RAM中,可...转载 2020-02-26 16:47:15 · 10035 阅读 · 0 评论 -
stm32——fmsc控制外部SRAM——小结
近期项目中使用到了 IS64LV25616AL 的芯片,因此我要总结一下。IS64LV25616AL这个是256*16的的,数据格式是16位,所以一共有512KB的空间,比较大了,stm32F103zet6才64KB内部SRAM。可以使能byte enable,进行8位的访问,只要设置好了后,可以像片内的sram一样,随意访问的片外的sram,可以使用指针形式,可以at绝对地址定位的方式(ac...原创 2020-02-25 12:07:56 · 863 阅读 · 0 评论 -
Keil MDK5生成 .bin文件的简单教程(图文)
以下参考https://blog.youkuaiyun.com/u014563989/article/details/51127519,同时自己实测。1.按如图步骤做,主要是要找到fromelf.exe的路径;(keil4则是在BIN40而不是在ARMCC里,这一点要注意)2.重点接下来要做的要视情况而定:选完fromelf.exe后在输入框中加个空格然后加一串字 :--bin -o ...原创 2019-11-06 17:03:18 · 332 阅读 · 0 评论 -
分享STM32 FLASH 擦除(以及防止误擦除程序代码)、写入
编译环境:我用的是(Keil)MDK4.7.2 stm32库版本:我用的是3.5.0一、本文不对FLASH的基础知识做详细的介绍,不懂得地方请查阅有关资料。 对STM32 内部FLASH进行编程操作,需要遵循以下流程: FLASH解锁 清除相关标志位 擦除FLASH(先擦除后写入的原因是为了工业上制作方便,即物理实现方便) 写入FLASH 锁定FLASH实例:#define FLA...转载 2019-11-06 14:48:09 · 4777 阅读 · 0 评论 -
stm32flash的读写特性
在使用stm32自带的flash保存数据时候,如下特点必须知道:1、必须是先擦除一个扇区,才能写入2、读数据没有限制3、写数据必须是2字节,同时写入地址以一定要考虑字节对齐,4、一般都是在最后几页进行数据保存的,确保数据量不超过flash的的大小,比如f103大容量是2k字节,其实一个扇区只能写入1k数量的2字节的数据。5、有些芯片的扇区大小是不相等的,那么驱动就要自己根据需要...原创 2019-11-06 14:39:16 · 1350 阅读 · 2 评论 -
STM32 IAP程序 源码 和测试代码 有详细的中文注释
http://bbs.21ic.com/forum.php?mod=viewthread&tid=588265&reltid=624002&pre_pos=2&ext=https://www.cnblogs.com/dwj411024/p/7717084.htmlhttps://www.cnblogs.com/hiker-blogs/archive/2013...转载 2019-11-05 21:41:25 · 450 阅读 · 0 评论 -
stm32f103c8t6 怎么使用IAP下载程序
首先下载官方STM32F10X的IAP Bootloader源码,STM32F10x_AN2557_FW_V3.3.0。用Keil4打开工程代码STM32F10x_AN2557_FW_V3.3.0ProjectIAPMDK-ARMIAP.uvproj工具/原料 电脑 stm32开发板 方法/步骤 第一步:因为我们是用的STM32F103C8T6 是64K F...转载 2019-11-05 10:14:21 · 2696 阅读 · 1 评论 -
stm32自带的flash分布图
缘由是要用到flash来保存数据,因此查阅了数据手册与参考手册,一般情况下,将要保存的数据存放到比较靠后的地方,page254,page255,4k字节,已经相当多的了,...原创 2019-10-27 11:13:42 · 1155 阅读 · 0 评论 -
stm32进入HardFault_Handler的定位方法
写程序偶尔会遇到程序死机的现象。这个时候,就需要debug来定位。通常情况下,程序会进入HardFault_Handler的死循环(针对stm32系列),我遇到过两次。第一次是使用数组之前,数组的下标清零了,导致无法访问串口的数据,俗称内存越界,你误以为访问串口的全局数组,其实是其他数据,uart[23],index=0,之后,想用uart[index-1]来访问数组的最后一个数据,这个时...原创 2019-10-22 13:51:29 · 688 阅读 · 0 评论 -
stm32的hal之串口库函数总结复习
1、串口的使用方法在hal库中,有三个串口发送的函数a、HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)b、HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uin...原创 2019-10-20 13:45:42 · 1544 阅读 · 0 评论 -
嵌入式开发资料集锦
摘自: http://blog.youkuaiyun.com/woshixingaaa/article/details/6005803嵌入式开发网站集锦!国内站点:电子设计信息网,尽管是个业界新秀,但潜力无量!这里能带给你无限精彩和希望!http://www.edires.net/华恒公司的主页,里面有很多的相关资料,有待大家去发现http://www.hhcn.com/c转载 2011-12-07 10:54:44 · 969 阅读 · 0 评论 -
单片机、嵌入式ARM学习网站推荐(多年的积累)
摘自:http://blog.youkuaiyun.com/zhangluli/article/details/5178757国内站点:电子设计信息网,尽管是个业界新秀,但潜力无量!这里能带给你无限精彩和希望!http://www.edires.net/华恒公司的主页,里面有很多的相关资料,有待大家去发现http://www.hhcn.com/chinese/embedlinux-res.转载 2011-12-07 10:35:55 · 940 阅读 · 0 评论 -
IFL嵌入式小组技术博客入口导航
from:http://user.qzone.qq.com/308337370/blog/1308149414技术博客开篇 Android系统移植与开发 Android.mk基础用法 SIM300 AT指令 Android overlay系统 android 显示系统详解 Android 窗口管理详解 android转载 2011-12-10 14:39:25 · 1023 阅读 · 0 评论 -
ARMV4,ARMV4,ARMV4I
http://www.cppblog.com/fenglinuestc/articles/47479.html也就是三种指令集:ARMv4 -> 它只支持 32 位 ARMv4 指令 ARMv4T ->“T”代表 Thumb(16 位指令模式)ARMv4I ->“I”代表交互作用 (Interworking)。它允许 32 位指令和 16 位指令共存 一些经常出现的CPU支持的转载 2012-03-13 14:28:31 · 1195 阅读 · 0 评论 -
在Keil中使用GCC工具链
摘自http://lishutong.me/1170.html 最近对GCC有些兴趣,想使用GCC工具链来编译ARM代码。首先想到的是Eclipse+GCC,但实际使用发现其安装和配置比较复杂,而且在调试ARM代码时,操作界面和易用性很不友好。在Windows下,Keil是其中最常用的ARM开发IDE之一。以前听说过其可以运行GCC工具链,于是今天尝试了一下,小有成果,总结如下。 首转载 2012-06-11 13:39:48 · 7345 阅读 · 0 评论 -
位操作(Bitmanipulation)
嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。解答:采用#defines 和 bit masks 操作。这是一个有极高可移植性的方法,是应该被用到的方法。最佳的解决方案如下: #define BIT3 (0x1static int a; void set_bit原创 2012-07-08 10:02:06 · 683 阅读 · 0 评论 -
访问固定的内存位置(Accessingfixed memory locations)
嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:int *ptr; ptr = (i原创 2012-07-08 10:10:41 · 728 阅读 · 0 评论 -
有符号类型与无符号类型之间的转换
void foo(void) { unsigned int a = 6; int b = -20; (a+b > 6) ? puts("> 6") : puts("}printf("b = %#x\n",b);b = 0xffffffec这个问题测试你是否懂得C语言中的整数自动转换原则;这无符号整型问题的答案是输出是“>原创 2012-07-08 10:14:11 · 1399 阅读 · 0 评论 -
STM32之RCC
开始学习STM32了,收录一些好的文章,由于参考手册写的实在有点松散,没有概括性,开了概括性的,再看手册,我觉得还是不错的。本篇来自:http://blog.chinaunix.net/uid-24671805-id-3075056.html1. STM32的时钟系统 在STM32中,一共有5个时钟源,分别是HSI、HSE、LSI、LSE、PLL (1转载 2012-09-30 20:31:26 · 1703 阅读 · 0 评论 -
STM32的位操作的方法
摘自:http://blog.youkuaiyun.com/cy757/article/details/5816929请关注以下文章,本文根据以下文章摘录、http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3861107&bbs_page_no=1&bbs_id=3020http://www.itqun.net/content-detail/13924转载 2012-09-30 21:18:06 · 2233 阅读 · 0 评论 -
怎么使用ST的库开发STM32
摘自:http://blog.chinaunix.net/uid-2595338-id-2139587.html觉得这篇文章还是不错的,至少讲清了很多初学者不理解的概念,值得推荐!我使用的芯片是 STM32F103VET 和编译器是 IAR ARM V5.5,调试器用 JLINK V81,下载ST的库,现在的版本是 STM32F10x_StdPeriph_Lib转载 2012-09-30 22:28:40 · 2929 阅读 · 1 评论