
嵌入式
分享在嵌入式路上的遇到的一些问题解决和心得
OMGMac
不坠青云之志
展开
-
解决因内存过小芯片使用malloc造成内存碎片使程序偶发性卡死问题
这一期,我们来分享一个之前在项目中遇到的一个使用内存出现的偶发性错误,具体原因是因为当时开发的项目采用的是STM32F1系列的103RCT6型号,其Flash为256K。原创 2024-10-19 19:11:13 · 374 阅读 · 0 评论 -
在cmd命令下调用gcc编译时如有一些关键api接口错误会显示正确拼写
可以看到上面在调用uxQueueMessagesWaiting时候因为拼写成uxQueueMessageWaiting少了一个s,所以编译出错,而我们在窗口可以发现,编译器在下面用不一样的颜色给标出来,正确的拼写,有助于我们可以快速纠正。这也是在使用cmd命令窗口调用gcc等编译器处理编译的优点,下次有使用到的小伙伴如果也遇到这种,就可以知道编译器已经告诉我们错误纠正的地方了。这一期,我们来分享一个使用make编译时候,编译遇到错误拼写时候,编译器会给我们提示正确的拼写结果和对比。原创 2024-10-19 18:37:40 · 239 阅读 · 0 评论 -
keil中编译遇到错误“error #94-D the size of an array must be greater than zero”解决方法
这一期,我们来看一个在keil中编译时候遇到定义数组元素个数为0时候遇到的一个错误。原创 2024-10-19 17:31:47 · 705 阅读 · 0 评论 -
解决错误提示:Error: L6218E: Undefined symbol xQueueCreateMutex (referred from main.o).的方法
今天继续来分享一个关于FreeRTOS学习实践过程中遇到的一个错误。其实这个错误也是由于宏定义定义不对造成的,只是这次出现的错误提示多了一些其他说明。话不多说,我们先来看一下吧。我们可以看到上面第一条的错误其实跟上一篇文章那三个错误一样,就是由于编译器在链接时候找不到该函数。但是这次仔细看下面还有两条提示,其大致意思就是你提供的信息太少,找不到相应的函数,可能看到这里会不太明白。我们下面讲了你就会明白,编译器为什么这么提示你。我们可以先从这个函数xQueueCreateMutex着手,从我们的工程中直接搜原创 2023-09-11 19:36:20 · 2514 阅读 · 1 评论 -
解决FreeRTOS程序跑不起来,打印调试却提示“Error:..\FreeRTOS\port\RVDS\ARM_CM3\port.c,244“的方法
今天来分享一个不会造成程序编译报错,但会使程序一直跑不起来,并且通过调试会发现有输出错误提示的错误例子分析,话不多说,我们就直接开始分析~首先,我们说过这个例子在编译时候没有明示的错误提示,也可以说没有语法和逻辑之类的错误,应该是程序哪里写的有不规范的地方造成的。我们先来分析一下当时的情况~原创 2023-08-28 22:03:16 · 2938 阅读 · 0 评论 -
解决“warning: #223-D: function “xPortSysTickHandler“ declared implicitly“告警提示
继上篇文章发布已有时隔两个月之久,今天就把这两个月遇到的一些问题解决分享一下,首先,我们来看今天分享的这个关于我在学习freertos遇到的一个告警。如图所示原创 2023-08-17 22:39:42 · 5319 阅读 · 1 评论 -
解决错误“ #error “include FreeRTOS.h“ must appear in source files before “include event_groups.““例子分享
今天来给大家分享一下,关于之前自己在学习FreeRTOS过程中遇到的一个错误提示,话不多说,我们直接来看~首先,我们看一下错误的提示:**error: #35: #error directive: "include FreeRTOS.h" must appear in source files before "include event_groups.h"**。编译时候报错如下图所示:原创 2023-08-28 21:43:29 · 6587 阅读 · 2 评论 -
分享因缺少 xPortSysTickHandler()函数而导致程序一直卡死在函数portTASK_FUNCTION的案例分析
今天来分享一个在学习freertos过程中遇到的一个小问题。就是发现程序跑不起来,但是debug调试时候发现也没有到while循环中,于是通过排查发现。话不多说,我们开始讲~原创 2023-08-21 22:23:26 · 3319 阅读 · 0 评论 -
分析出现HardFault_Handler\提示的其中本人遇到比较多的一个情况
不知道大家在编写单片机时候有没有遇到一个硬件错误,也就是HardFault_Handler\,这个错误我遇到过好几次,一般来说这种错误有几种情况会出现,比如。像一般遇到这种的,往往你去Debug调试时候往往程序会停在B.这里,你停止之后像keil会跳到相应位置提示你,你的程序在哪里卡住。所以解决方法就是:如果出现这种提示硬件中断错误,可以去查看一下自己的程序有没有哪里可能造成数据溢出等情况,有可能是因为这种情况,一般比较常见。本人水平有限,上述信息仅供学习参考,如有错误和不妥之处,请多多指教。原创 2023-06-05 22:26:09 · 1342 阅读 · 0 评论 -
分享通过复旦微魔方来找到FM33LG048串口3无法发送和接收原因的例子
今天来分享一个关于开发国产芯片(复旦微FM33LG048)串口3时候遇到一个无法发送和接收原因,通过使用官网的图形配置工具来成功解决问题的案例。具体情况是这样的,该芯片官网有提供相应的keil参考例子,因为我要用到这个芯片上面的五个串口,所以拿了官方的UART0例子当做参考,然后看了芯片手册还有时钟树以及开发注意事项,上面就说串口0/1有双时钟,其他三个串口3/4/5(没有串口2)就跟着时钟时钟走,因此其他几个串口外设驱动我也就参考串口0的参考写。但是莫名其妙的是单独串口3不能正常收发,其他几个参考下来原创 2023-06-03 17:04:07 · 825 阅读 · 1 评论 -
解决错误提示:“Flash Timeour Reset the Target and try it again“或者“Error: Flash Download failed - Cortex-M3
今天来分享一下前几天在进行烧录时候遇到的一个错误,首先咱们来看一下这个错误提示的内容哈。错误提示:1、Flash Timeour Reset the Target and try it again2、Error: Flash Download failed - "Cortex-M3"第一个意思就是Flash重置超时了需要再次尝试,第二个意思是Flash下载失败对于“Cortex-M3”。其实这个错误在网上大部分是因为芯片有读写保护时候烧录会出现这种提示,但是我这次却不是因为芯片读写保护造成原创 2023-05-28 18:41:24 · 2102 阅读 · 0 评论 -
解决告警提示:“warning: #223-D: function “can_single_send“ declared implicitly“方法
今天来简单分享一下关于编译时候出现“warning: #223-D: function “can_single_send” declared implicitly”告警信息的其中一个原因,因为出现这种提示可能有因为函数名字不一致导致的,也有可能因为函数声音出现在其他头文件中导致的。而该告警提示的意思是:can_single_send函数为隐式声明,而我当时是在其他源文件里面使用了该文件,并且也引用了相应头文件,但是编译时候提示我上述告警提示,好了,今天的分享就到这里~原创 2023-05-28 17:54:59 · 10456 阅读 · 0 评论 -
关于复旦微FM33LG0XX系列芯片串口发送需要先发送一个字节的原因
今天分享一个很有趣的现象,就是最近使用到我们国产品牌复旦微的一款32位单片机芯片(FM33LG0XX),我发现这个芯片使用串口发送中断时候必须先发送一个字节先,才能把相应的发送标志位标志上来,跟我们以前经常用的STM32芯片好像有点不一样是吧。据了解,想灵动微和复旦微的部分芯片使用串口发送中断都是需要这样子来发送。像STM32和GD32只要使能了相应的中断和使用了串口发送接口函数就可以将你想发的数据发送出去。原创 2023-05-16 16:05:52 · 658 阅读 · 0 评论 -
解决“在Debug模式下,多按几次自动运行,程序才可以可以运行起来”的问题方法
今天来分享一个自己以前遇到过的一个在使用keil时候使用C库函数中的printf函数会出现的一种现象。话不多说,咱们先说一下现象:就是程序下载进去后不执行,就算是断电之后,再重新上电也没用。但是在Debug模式下,多按几次自动运行,程序就可以运行起来原创 2023-05-13 19:43:34 · 1340 阅读 · 2 评论 -
解决错误提示“error: #5: cannot open source input file “core_cmInstr.h“: No such file or directory“方法
今天来分享一个我们在初期开发单片机时候遇到的一个很常见的错误,就是提示“error: #5: cannot open source input file “core_cmInstr.h”: No such file or directory”错误信息。原创 2023-05-03 22:45:36 · 11567 阅读 · 0 评论 -
分享串口接收中断只能接收到一个字节的其中一个原因
没办法,我就换了几块板子试试看,发现还是同样的问题,思来思去,又把串口部分看了一遍,最后想到不会使我485转串口连接端子那边有问题吧,因为之前也遇到过485转串口的连接端子线出现问题不能接受和发送,这次只能接受一个字节不会真的是这个原因吧!!!,于是我就把这个端子线换了一下,没想到,串口真的恢复了,我去啊,没想到是物理问题造成的。原创 2023-04-28 23:38:21 · 5520 阅读 · 5 评论 -
解决提示“Browse information of one or more files is not available: xxx\Source\system_gd32f20x.c“问题
今天分享一个之前遇到的让我头疼了一个下午的问题,就是因为我把一个头文件添加进工程之后就开始各种报错。因为之前不知道为什么我的keil可能安装了一个新的,所以之前工程的头文件路径变了,然后编译就开始报错,错误信息为:原创 2023-04-27 22:30:12 · 1238 阅读 · 0 评论 -
解决出现“CMake can not determine linker language for target”问题的方法
今天来分享一个我在编写CmakeList文件曾遇到的一个错误。,而导致这个提示还有一种原因是你需要参与编译的文件类型不对,所以系统会提示你CMake无法确定目标xxx的链接器语言。②:查找一下生成相应库的时候其名称定义是否不一致,我这次就是这个原因导致的。①:确定需要参与编译的你的文件类型是否需要cmake要求。原创 2023-03-11 14:13:54 · 10739 阅读 · 0 评论 -
J-Link识别到驱动但是识别不到芯片CODE和上电亮红灯的原因和解决方法
今天在来分享一下自己在使用J-Link时候遇到的一个问题以及我自己的解决方法~今天在用J-Link烧录时候突然发现J-link连接到开发板时候会先闪几下红灯,然后J-link驱动是可以找到的,但是通过Keil查看J-link是否识别到要烧录的芯片CODE,却一直识别不出来,于是我就反复插拔,发现还是无法识别到芯片CODE。。。于是,我就检查了一下自己的J-Link是否有连接错误,然后就发现了我的连接好像存在短路,于是就把接线修改了一下,然后再插上去就发现可以正常识别到芯片CODE。所以如果你的J-Link在原创 2022-12-06 23:27:51 · 6189 阅读 · 3 评论 -
解决告警“warning #1295-D Deprecated declaration xxxxxxx - give arg types”方法
今天分享一个常见的告警原因以及其解决方法。解决告警“warning #1295-D Deprecated declaration xxxxxxx - give arg types”方法原创 2022-08-31 23:07:27 · 36499 阅读 · 6 评论 -
解决“error #147 declaration is incompatible with xxx xxx (declared at line xx)”问题
今天分享一个很奇怪的问题,为什么说奇怪,因为今天分享的这个错误是我在移植代码时候遇到的,在其他人的工程中可以正常运行,而我自己的就运行报错,于是来给大家分享一下,说不定有小伙伴知道呢~......原创 2022-08-26 22:01:56 · 19785 阅读 · 3 评论 -
解决“warning #188-D enumerated type mixed with another type”告警
今天分享一个之前我之前在嵌入式开发时候遇到的一个告警提示。解决“warning #188-D enumerated type mixed with another type”告警原创 2022-08-23 23:18:40 · 34457 阅读 · 4 评论 -
解决“File has been changed outside the editor, reload?”提示
今天分享一个会出现“File has been changed outside the editor, reload?”提示的一个操作,在上一篇的。虽然后期编译没什么影响,但是如果不关掉这个map文件,后期就会一直提示你。因此,如果是因为加载了工程map文件不关掉,每次编译keil都会提示你。本人水平有限,上述信息仅供参考,如有错误和不妥之处,请多多指教。...原创 2022-08-07 18:06:30 · 9690 阅读 · 4 评论 -
告诉你如何从keil工程知道使用了多少RAM和ROM空间
我们常常在使用一款芯片的时候往往都会考虑芯片的RAM和ROM大小,因为这觉得了我们的很多功能,虽然可以采用外置的FLASH以及RAM芯片来扩展,但是无论使用了外置还是内置的空间,我们都需要去了解我们工程中使用了多少的RAM空间以及多少ROM空间。红色的框告诉了我们,我们这个工程的大小,里面将了我们Code(代码)的空间大小,以及其他三种数据使用的空间大小。到了这里,小伙伴肯定会想,这还要算,有没有直接一点的办法,直接告诉我用来多少的空间?本人水平有限,上述信息仅供参考,如有错误和不妥之处,请多多指教。...原创 2022-08-07 16:23:51 · 11508 阅读 · 7 评论 -
使用GD32F207的高级定时器来产生PWM波出现的隐藏BUG
今天分享一个在做GD32F207项目适合遇到的一个让人很无语的BUG,之所以称之为BUG,是因为实在想不出是为什么,但是有解决方法。首先,是发现这个BUG的问题原因,是我在通过高级定时器来生成PWM波进行调节输出电压,这里我使用了GD32F207的定时器TIMER0(高级定时器)的四个通道(CH0_CH3)分别输出不同占空比的PWM波(注意这里我使用的是高级定时器,而不是基本定时器,为什么这里要重点说是高级定时器,后面我们会说明到)。但是我发现莫名其妙只有TIMER_CH3这个通道成功输出了PWM波,而TI原创 2022-07-30 17:31:39 · 1227 阅读 · 4 评论 -
解决Error L6218E Undefined symbol XXX....问题
当然也有人说,调用的函数的参数跟函数本身参数不一致也会出现这种错误提示,但是个人认为这种应该会提示调用参数个数不一致。不过大家也可以去找找看,看看参数不一致是否也会弹出L6218E这种错误提示。分享一个keil的错误编译提示以及其问题解决方法,当我们碰到"ErrorL6218EUndefinedsymbolXXX…另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞,谢谢~本人水平有限,上述信息仅供参考,如有错误和不妥之处,请多多指教。...原创 2022-07-19 08:31:40 · 19544 阅读 · 0 评论 -
讲解STM32芯片引脚定义中的ADC123_IN0是什么
今天在编写一个项目的ADC部分时候,看到原理图上芯片引脚定义的ADC123_IN0,如图所示:想到自己以前一开始遇到这个时候也不是很明白。于是,今天就拿出来讲解一下,我们就拿图片中的PA0来说,它的复用引脚的ADC123_IN0其实并不是ADC123的通道0,而是该引脚可以分别做为ADC1的通道0来用(ADC1_IN0),也可以作为ADC2以及ADC3的通道0来用(ADC2_IN0和ADC3_IN0)。因此像其他的,比如ADC12_IN1其实也就是说可以即当ADC1_IN2来用也可以当ADC2_IN2原创 2022-05-24 23:28:40 · 7477 阅读 · 5 评论 -
继电器模块讲解
在上一篇(“常用继电器模块的PCB设计与实物分享”)里我分享了一个自己制作的继电器模块,今天我来讲解一下继电器模块的作用和原理。我们先来看一下这里的继电器实物图:继电器模块的结构:继电器的内部结构其实很简单,就是很像一个闸刀开关一样,如图所示:结构图里面右边的上下两个点是连接着磁铁,会接出到我们的系统电路上。左边的上下两个点分别引出,我们常叫这两个点为“常开”和“常闭”(当然还有只有“常开”或者"常闭"的继电器,这样的继电器往往只有四根脚)。而右边中间的那个脚就是COM端,就是公共端。在内部就是原创 2022-05-21 22:35:40 · 24602 阅读 · 9 评论 -
常用继电器模块的PCB设计与实物分享
今天分享一下自己做的一块继电器模块,因为之前有用到继电器模块的原理图,索性自己画了一下,原理图如图所示:一、原理图:继电器模块还是比较简单的,就是通过三极管的开关作用来使电路导通,从而来控制继电器的磁铁通电吸合内部的衔铁。其高低电平的触发其实是由继电器采用的三极管是NPN还是PNP来决定的。具体详细的继电器模块介绍,如果有小伙伴感兴趣的可以在下方评论,后期出一篇专门介绍继电器模块。二:模块3D视图现在,再看一下继电器模块的正反3D图,如图所示:三、实物图:然后将电路板做出来后再进行焊接,其原创 2022-05-14 20:49:32 · 10917 阅读 · 12 评论 -
STM32F207串口通信配置
因为之前有用到STM32F207芯片,因此写了一个串口通信,鉴于自己学习时候也查找过网上关于STM32F2系列的资料,感觉查出来比较少,因此想着今天分享一下自己写的关于STM32F207串口配置的代码给大家,后续有其他的关于F2系列的开发再分享。今天先来分享一下关于STM32F207串口1的配置。代码如下:void usart1_init(u32 bound){ GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO配置结构体变量 USART_InitT原创 2022-05-08 15:01:03 · 1273 阅读 · 0 评论 -
解决J-LINK烧录后程序不运行问题
今天分享一个经验,之前在弄STM32F207的一个项目,然后通过J-LINK进行烧录,发现烧录进去后程序没跑起来,然后查看了一下J-LINK设置,发现这个选项没有勾起来,如图所示:然后就勾上来后重新烧录,发现程序可以直接跑起来,后来一想这个选项就是烧录完自动按下了reset键一样,之前没怎么用过J-LINK一直以为自动会reset,没想到需要勾上,也算是当做一个经验吧。本人水平有限,上述信息仅供学习参考,如有错误和不妥之处,请多多指教。另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞,原创 2022-05-06 22:05:13 · 2429 阅读 · 2 评论 -
STM32F103C8T6详细引脚表
今天准备画一个STM32F103C8T6的最小系统板,就去STM32F103C8的数据手册查看了一下相应的引脚,因为数据手册里面的引脚表有中容量的多种封装描述,看上去比较麻烦,我就单独做了一个LQFP48脚的引脚表。方便后期自己画封装,就图看的省力一点哈。其部分图片如下所示:有需要的朋友可以从我的资源里去下,资源链接:STM32F103C8T6详细引脚表本人水平有限,上述信息仅供学习参考,如有错误和不妥之处,请多多指教。另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞,谢谢~...原创 2022-04-13 23:01:49 · 42533 阅读 · 3 评论 -
解决STM32程序一烧录进去断电或复位即丢失问题
分享一下个人错误经验,之前焊接了一块STM32F103RCT6芯片,配了ISP自动下载电路,焊接好后上电烧写发现可以烧录进去,但是怎么一断电或者一复位怎么程序就没了,连一个简单的LED程序都会没了。一想不对劲,BOOT配置也正常啊,难道我的ISP不行,于是就手动下载,我去结果也不可以。于是怀疑难道是没有下载到ROM里面,只存在RAM里面,掉电就给我丢失了?查了一下网上,有人说是可能是没有下载到ROM里面,有人说BOOT配置不对,有人说硬件电路有问题,于是我就查啊查,果然被我发现了,用万用表一查发现我的B原创 2022-01-28 14:55:48 · 12363 阅读 · 3 评论 -
打开keil5提示缺少“TOOLS.INI“问题解决方法
之前用快捷方式打开keil5发现突然弹出如图所示提示:提示我的keil根目录下缺少TOOLS.INI,然后打不开keil5。后来查了一下真的根目录下的真的没有这个配置文件,于是在MDK5目录里面的找到了这个TOOLS.INI配置文件,然后将其复制后粘贴到keil安装的根目录下,然后再次打开keil5就没有提示了。如图所示:解决方法:在自己的keil5安装目录下的mdk5的文件夹里面找到TOOLS.INI文件后复制到keil5的根目录下即可。另外本人水平有限,上述信息仅供参考,如有错误和不妥之处,请原创 2022-01-28 13:35:42 · 21777 阅读 · 3 评论