
单片机
分享自己在单片机学习以及开发过程中遇到的知识和错误解决方法
OMGMac
不坠青云之志
展开
-
分享配置FreeRTOSConfig.h文件因部分宏值配置不对以及相应函数未定义出现的三个错误解决方法
今天来分享一个在创建FreeRTOS时候调用官方的FreeRTOSConfig头文件时,因部分宏值的配置与FreeRTOS内核文件中的函数不匹配,导致编译时候出现了相应的错误。于是,既然遇到了,就准备拿出来讲一下,让其他遇到的小伙伴也可以看一下具体是什么原因导致的。好了,话不多说,我们直接开始讲~原创 2023-09-10 18:47:32 · 1606 阅读 · 0 评论 -
分享通过复旦微魔方来找到FM33LG048串口3无法发送和接收原因的例子
今天来分享一个关于开发国产芯片(复旦微FM33LG048)串口3时候遇到一个无法发送和接收原因,通过使用官网的图形配置工具来成功解决问题的案例。具体情况是这样的,该芯片官网有提供相应的keil参考例子,因为我要用到这个芯片上面的五个串口,所以拿了官方的UART0例子当做参考,然后看了芯片手册还有时钟树以及开发注意事项,上面就说串口0/1有双时钟,其他三个串口3/4/5(没有串口2)就跟着时钟时钟走,因此其他几个串口外设驱动我也就参考串口0的参考写。但是莫名其妙的是单独串口3不能正常收发,其他几个参考下来原创 2023-06-03 17:04:07 · 825 阅读 · 1 评论 -
关于复旦微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 评论 -
解决提示“Browse information of one or more files is not available: xxx\Source\system_gd32f20x.c“问题
今天分享一个之前遇到的让我头疼了一个下午的问题,就是因为我把一个头文件添加进工程之后就开始各种报错。因为之前不知道为什么我的keil可能安装了一个新的,所以之前工程的头文件路径变了,然后编译就开始报错,错误信息为:原创 2023-04-27 22:30:12 · 1238 阅读 · 0 评论 -
教你如何使用解决keil编译大小限制问题
关于上一篇我们讲解到可能刚接触keil的人会因为没有使用注册机(好像不能使用注册机,所以就缩写吧)导致编译超出32K文件时候会报错的问题。于是在这一篇我们就来好好讲解一下如何使用keil注册机去破解keil~原创 2022-10-16 20:53:40 · 4189 阅读 · 3 评论 -
解决keil提示“ xxxx exceeds the maximum allowed for this version of the linker“问题
因为keil如果没有破解的话,最大编译的大小好像是32K,因此如果你编译的文件超过了32K,keil就会提示不能编译。所以我们大部分都会使用注册机去破解keil对编译文件的限制。为什么会遇到这种问题呢?好了,分享就到此结束了。原创 2022-10-16 13:11:43 · 4371 阅读 · 1 评论 -
处理告警“ warning #69-D integer conversion resulted in truncation”的方法
教你如何处理告警“ warning #69-D integer conversion resulted in truncation”的方法原创 2022-08-27 22:56:45 · 11860 阅读 · 3 评论 -
解决GD32F207串口可以接收但发送00的问题
分享一个自己在开发GD32F207串口时候因为疏忽遇到的一个问题,就是在配置好串口后,通过串口助手检测一下串口的收发,,因为以前遇到过配置不成功,使用部分串口助手工具时候也会接收到00现象,另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞,谢谢~本人水平有限,上述信息仅供参考,如有错误和不妥之处,请多多指教。(也就是说串口给我发送了一个00),将其修改后就成功实现串口发送。...原创 2022-07-19 23:10:22 · 2724 阅读 · 0 评论 -
解决GD32F20X支持包安装后打开官方例程无法识别芯片问题
今天分享一个自己遇到的一个问题,就是在安装了GD32F20x的支持包后,发现打开keil5的工程后,提示缺少芯片的device,于是以为keil5的版本不够,又去官网下了其补丁包。没想到还是不行,后来发现迁移到keil5格式就可以找到相应的芯片驱动,打开工程也不会再提示缺少相应的device。解决方法如下两张图所示:1、首先点击菜单栏的Project,然后点击Mange2、最近点击其下拉选项中的Migrate to Version 5 Format即可(因为我这里版本已经迁移过,所以选型显示为灰色)原创 2022-07-10 15:04:21 · 1410 阅读 · 3 评论 -
解决Error:L6218E:Undefined symbol TimingDelay_Decrement (referred from stm32f2xx_it.o)问题
当你出现这个问题时候,你只要去看一下你的工程是否有TimingDelay_Decrement()这个函数,该错误提示你这个函数未定义,因为这个函数在官方提供的标准库包中有提供案例,而案例模板的工程的main文件就含有该函数的定义,而stm32f2xx_it.c文件包含这个函数,其包含了模板的main.h头文件,如下图所示:该main.h头文件包含该函数,如图所示:如果不明白可以去看我的上一篇文章解决STM32F2系列工程提示缺少main.h问题其讲解了为什么需要调用main.h文件。回到问题,因原创 2022-04-28 23:15:12 · 11788 阅读 · 0 评论 -
解决STM32F2系列工程提示缺少main.h问题
今天因为项目用到了STM32F207VCT6芯片,所以就先建了一个工程,把启动文件还有其他CMSIS相关文件加进去后,然后编译一下发现,提示我缺少了一个main.h,如图所示:顿时把我整懵了,我好像没有调用main.h这个文件吧,然后提示我stm32f2xx_it.c这里调用到了,然后一点开,发现还真有main.h文件调用,如图:后来看了一下这个main.h其实是ST官方提供的一个案例模板的头文件,然后stm32f2xx_it.c用到了这个案例中的一个系统延时函数TimingDelay_Decrem原创 2022-04-28 22:54:24 · 7447 阅读 · 8 评论 -
利用定时/计数器做分频器
Proteus 仿真要求:利用定时/计数器 T1 在 P1.5 引脚得到输入脉冲信号的 4 分频电路图代码://利用定时/计数器 T1 在 P1.5 引脚得到输入脉冲信号的 4 分频#include<reg51.h>sbit led5=P1^5;void t_1() interrupt 3 { TH1=0xfe; //重装初值 TL1=0xfe; led5=~led5;}void main(){ TMOD=0x60; //定时器0计数,采用方式原创 2021-06-10 10:07:02 · 3315 阅读 · 2 评论 -
串口通信的中断请求标志位需要软件置位的原理
对于单片机处理串口通信发送和接收完时候的中断请求标志位都需要软件置位的,而不是硬件自动置位呢,是否有想过呢?因为串口通信的中断请求是这样子的,当一帧发送完成,内部硬件自动置位TI=1,而当接收完一帧信息时,内部硬件会自动置位RI = 1,请求中断处理。而因为TI和RI是以“或逻辑”关系向主机请求中断,所以主机响应中断时并不清楚是TI还是RI的中断请求,因此我们才需要在中断处理函数里判断是TI还是RI,然后分别处理。也正因为如此,所以这两个中断请求标志位均不能由硬件自动置位,必须通过软件清0。另外本人水原创 2022-04-09 22:39:47 · 7094 阅读 · 0 评论 -
keil5点击调试提示SarmCM3.dll文件缺少问题
这里继续分享一个在keil5点击Debug调试时候,提示缺少SarmCM3.dll文件问题,如图所示:这里提示我缺少一个SarmCM3.dll文件,因此我们只需要从网上找一个相应的文件加到BIN文件夹下即可。文件如图所示:解决方法:下载SarmCM3.dll文件后,将其放在自己的keil5目录下的BIN文件里面即可。文件路径为:\md5\md5\ARM\BIN本人水平有限,上述信息仅供参考,如有错误和不妥之处,请多多指教。...原创 2021-12-23 12:52:34 · 6945 阅读 · 0 评论 -
keil5选择ST-Link Debugger时候setting点击不了问题
分享一个自己用keil5的ST-Link Debugger时候遇到的一个问题,就是在我选择用ST-Link来进行调试时候,发现setting选择不了,如图所示:弹出来了一个提示我,说无法加载驱动程序,少了一个ST-LINKIII-KEIL_SWO.dll动态链接库文件,但是我知道了keil5下面的ST-Link文件夹都没有,网上搜了一下,有些人说缺少三个文件,有些说要修改TOOLS.INI配置文件,然后嘛网上大部分是ST-LINKIII-KEIL.dll动态链接库文件,而我的配置文件里面写的是ST-L原创 2021-12-22 12:01:24 · 5938 阅读 · 3 评论 -
keil编译时候产生的错误(Error: L6200E: Symbol....)解决方法
今天分享一个自己在做实验时候发现的一个错误问题,查了一下网上也有人遇到这样的问题,就拿出来分享了一下自己遇到的情况。首先看keil的错误提示,如图所示可以看到两个抱错,原创 2021-12-17 13:06:16 · 57272 阅读 · 5 评论 -
51内核单片机如何设置IO口工作模式(如推挽输出)
之前在用STC12C5A60S2芯片时候,因为要使一个led灯亮一点,所以就想到了使这个IO口设置为推挽输出,这样输出的电流就会比较大,一般可以达到20mA.所以这里我们介绍如何设置IO的工作模式,以设置P3口推挽输出为例子。首先,我们开门见山先亮出代码,很简单就这四行代码,如果了解的同学一看便知,不理解的同学没关系,看了后面就知道为什么这样设置了。简单来说就是两步:第一步控制相应寄存器,第二步设置相应寄存器值。sfr P3M0=0xB2; sfr P3M1=0xB1; P3M0=0x80原创 2021-06-22 11:10:48 · 16357 阅读 · 6 评论 -
带你了解什么是中断以及外部中断案例分析
Proteus 仿真要求:8 个 LED 一直闪烁;每按一下按键(外部 0 中断 P3.2),8个 LED 从下向上流水 1 次。电路图:代码:#include<reg51.h>#include<intrins.h>void delay(unsigned int m){ unsigned int i; for(;m>0;m--) { for(i=540;i>0;i--) {;} }}void int0() interrupt 0原创 2021-06-09 23:40:15 · 9390 阅读 · 0 评论