现在开源这个项目的波哥做了一款可替代串口屏的核心板,我们来看下,这个是波哥送我的,看起来很小巧:
一直在用Keil MDK开发,很多时候并没有仔细去研究它强大的功能,最近在做一些开源项目的同时也在想办法提高自己的工作效率,所谓时间就是金钱,看到世伟兄分享的这篇Keil MDK的笔记,正是我想要学习提升效率的,所谓前人种树,作为后人的我就来乘凉咯!
之前一直用的是cJSON库来封装和解析,写久了感觉实在太丑,又难维护,于是还是研究下QT原生的QJson是否有更优雅的方法来封装一些Json对象,果不其然,通过阅读QT开发文档发现,QT封装的Json非常强大,其中Json对象可以有很多种形式,我们看到qjsonobject.h中:
这几天整同事留下来的项目的BOM,很简单的错误,弄的头大,看下文章分下神, 值得尝试一下这个调试方法。
方法就是打开一个.h文件拖到最后→看到如下字样的,就是库函数了 /** @defgroup GPIO_Exported_Functions
这篇文章主要介绍了VScode + keil开发环境搭建及安装使用过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。
作为一个51单片机或STM32单片机的使用者,keil一直是我们的必备的一款工具之一。但kei的一些问题也一直存在,被人吐槽最多的就是编辑器功能单一、提示功能不强、对中文支持不友好。当然,还有一些爱美的童鞋,说它界面丑陋。
在 RV MDK 中,默认情况下生成*.hex 的可执行文件,但是当我们要生成*.bin 的可执 行文件时怎么办呢?答案是可以使用RVCT 的fromelf.exe 工具进行转换。也就是说首先将 源文件编译链接成*.axf 的文件,然后使用fromelf.exe 工具将*.axf 格式的文件转换成*.bin 格式的文件。 下面将具体说明这个操作步骤: 1. 打开 Axf_To_Bin 文件中的Axf_To_Bin.uv2 工程文件; 2. 打开 Options for Target ‘Axf_To_Bin’对话框,选择User 标签页; 3. 构选 Run User Programs After Build/Rebuild 框中的Run #1 多选框,在后边的文本框中输 入C:\Keil\ARM\BIN31\fromelf.exe –bin -o ./output/Axf_To_Bin.bin ./output/Axf_To_Bin.axf 命令行; 4. 重新编译文件,在./output/文件夹下生成了Axf_To_Bin.bin 文件。
Keil是一个公司的名字。本来Keil只能用来开发51系列单片机,叫keil,但是后来ARM公司收购了Keil软件,基于Keil扩展了ARM的开发,软件名改为MDK。所以有两个软件:Keil C51和Keil MDK,前者开发51系列单片机,后者主要用于ARM系列单片机的开发。 Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。并且相对于某些开发环境来说,MDK5的界面真的做的挺好的,配色等都很人性化
本教程展示了如何使用VisualGDB使用Keil MDK-ARM编译器构建项目,使用VisualGDB智能感知包括CodeMap,并使用Visual Studio调试它。
本文介绍了 C51 单片机编程中的一些编程要点和技巧,包括变量定义、循环和逻辑运算符、指针和数组、中断和定时器、独立按键和数码管显示等内容。同时,还介绍了如何使用 Keil C51 编译器进行程序编译,以及如何解决程序中的循环执行问题。
rtthread 是一个功能强大,组件丰富的物联网操作系统。它相比于其他的 RTOS 的一个主要区别之一,也就是它不仅仅是一个实时内核,还具备丰富的中间层组件。那对于 rtt 来讲,它又是如何管理和构建工程的呢?下面笔者将从一个工程的目录结构开始来进行阐述。
本教程连载中,篇章会比较多,为方便同学们阅读,点击这里可以查看文章的 目录列表,目录列表页面地址:https://blog.csdn.net/thisway_diy/article/details/121399484
对应关系: P0.0 ->A P0.1->B P0.2->C P0.3->D………
内存在程序编译的时候就已经分配好了,在程序运行期间这块内存都存在,如全局变量,static变量等。
之前用Keil MDK做项目的时候有个想法:是否能将宏定义做成一个可视化的模板呢?这样我就不用直接去修改对应的.h或者.c文件了,也能减少手误导致工程编译出问题。另外,当程序需要改某个参数时,也可以告诉那些看不懂程序的人帮忙配置,增加程序的维护性。很荣幸的是,Keil MDK就支持这样的方法!那么如何来实现呢?搜索官方文档里的Configuration Wizard:
Keil是一款专业的嵌入式开发工具,主要用于单片机的开发,具有以下功能和使用技巧:
安装 gcc-arm-none-eabi-5_4-2016q3-20160926-win32(这只是当时我配置时候用的版本,其他版本也是可以的) 记得最后的第3选项打钩,因为自动添加环境变量( 估计是因为自动添加,所以会添加到用户的环境变量下面去,一样可以用,如果自己添加,可以添加到系统的环境变量中去 ) 最后,只要是在你的终端(终端可以使window自带的cmd,也可以是你配置过的模拟linux的终端) ,能够查询到arm gcc的版本,就算是正常安装了,如下所示:
空中下载技术OTA(Over-the-Air Technology)是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口,对产品中的固件程序进行更新升级。通常实现OTA功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序为Bootloader区域,第二个项目程序App代码为真正的功能代码,执行应用和升级。这两部分项目代码同时烧录在User Flash中。
源文件由 µVision IDE 创建并传递给 C 或 C++ 编译器或宏汇编器。编译器和汇编器处理源文件并创建可重定位的目标文件。
MDK开发的技巧: 1.使用fromelf.exe程序,将.hex或者.axf转化为.bin文件。 2.利用.bat批处理文件,将.bin和.hex拷贝到需要的文件夹下。
bin文件的生成都是通过fromelf.exe来实现的,fromelf.exe一般在Keil的安装路径下:
今天发现我的 Keil MDK5.28z win10系统上面,点击 Project 菜单立即崩溃。网上找到了解决方法
将下面的Computer ID 复制到打开的注册机的CID中,并将注册机的Target设置为ARM,点击Generate,会生成一串字符
作为一名嵌入式系统的开发者,我经常使用Keil软件进行嵌入式软件的开发。在使用Keil软件的过程中,我获得了许多宝贵的经验,下面我将从使用者的角度,分享一下我的心得体会。
在Realview MDK的集成开发环境中,默认情况下可以生成*.axf格式的调试文件和*.hex格式的可执行文件。虽然这两个格式的文件非常有利于ULINK2仿真器的下载和调试,但是ADS的用户更习惯于使用*.bin格式的文件,甚至有些嵌入式软件开发者已经拥有了*.bin格式文件的调试或烧写工具。为了充分地利用现有的工具,同时发挥Realview MDK集成开发环境的优势,将*.axf格式文件或*.hex格式文件转换成*.bin格式的文件是十分自然的想法。本文将详细的探讨这种转换方法。
很多朋友看到如下工程窗口的图标(如:带有 “叹号”、“星号”、“钥匙”、“禁止驶入” 标志),就会产生疑问:这些图标到底是啥意思呢?
在KEIL魔术棒中通过以下方式生成bin文件时,居然出错,当时震惊了,第一次出现这种情况:
Keil默认在下载程序后,需要手动按下开发板复位才能启动程序。通过修改修改配置,可以下载后自动复位重启运行程序,方便调试。
文章目录 前言 一、串口通信基本知识 二、编程思路 usart.h usart.c main.c 宏定义 三、总结 前言 开发板:stm32f407VET6 开发环境:keil5 MDK 一、串口通信基本知识 【STM32】5分钟了解STM32的串口通信 二、编程思路 usart.h // ============================================= # @Time : 2020-09-03 # @Author : AXYZdong # @CSDN : http
3.把Mbedtls源码里面的 include 和 Library 复制到Mbedtls文件夹里面
LoRaNode的SDK可能由于某种原因吧,是在linux下面开发的,我们今天来构建windows下的keil开发工程。
写一下寒假做的51小项目,本次是基于AT89C51的八路抢答器,课设水平难度。 具体说明:硬件分为两部分,主持人主控部分和选手使用部分。可以实现:按动开始可以开启程序或者开启答题倒计时,按动复位可以实现归零;八个选手各有一个按键,按下即可抢答,与此同时,蜂鸣器响一秒钟,选手的LED点亮。在答题时间还剩十秒钟时,发出提示音,时间耗尽时,所有LED点亮,蜂鸣器鸣响。当抢答倒计时结束仍没有选手抢答,所有LED点亮,同时蜂鸣器报警一秒钟,之后主持人可以复位重新开始。
注意,xdebug_debug_zval函数是xdebug扩展的,使用前必须安装xdebug扩展,输出如下
KEIL在编译完成后在Object目录下生成axf文件,我们可以使用fromelf工具将axf文件转化为bin文件。
我们知道cm3使用的三级流水线,那么到底一条指令的执行需要多少个时钟周期。下面通过keil软件仿真,来计算一个指令所需的时钟周期。
摘要 现在芯片价格不断上涨,国内很多厂商也在不断的找替换方案。以ST为例,一个芯片涨了十几倍。蛋疼。。。。 最近刚好有机会拿到国产芯片MCU--兆易创新的评估板(GD32350R)。板载资源如下: 硬件描述芯片型号GD32F350R8T6CPUARM Cortex M4主频108M片内SRAM16K片内FLASH64K下载器GD-Link 📷 拿到这个板子,首先肯定是去看看RT-THREAD是否已经包含这个BSP了,答案:没有这个GD32F350系列的BSP。那必须把他移植个RTT,然后PR一个BSP上去才
GC会stop the world。会暂停程序的执行,带来延迟的代价。所以在开发中,我们不希望GC的次数过多。
Lua采用了基于垃圾收集的内存管理机制,因此对于程序员来说,在很多时候内存问题都将不再困扰他们。然而任何垃圾收集器都不是万能的,在有些特殊情况下,垃圾收集器是无法准确的判断是否应该将当前对象清理。这样就极有可能导致很多垃圾对象无法被释放。为了解决这一问题,就需要Lua的开发者予以一定程度上的配合。比如,当某个table对象被存放在容器中,而容器的外部不再有任何变量引用该对象,对于这样的对象,Lua的垃圾收集器是不会清理的,因为容器对象仍然引用着他。如果此时针对该容器的应用仅限于查找,而不是遍历的话,那么该
Lua采用了基于垃圾收集的内存管理机制,因此对于程序员来说,在很多时候内存问题都将不再困扰他们。然而任何垃圾收集器都不是万能的,在有些特殊情况下,垃圾收集器是无法准确的判断是否应该将当前对象清理。这样就极有可能导致很多垃圾对象无法被释放。为了解决这一问题,就需要Lua的开发者予以一定程度上的配合。比如,当某个table对象被存放在容器中,而容器的外部不再有任何变量引用该对象,对于这样的对象,Lua的垃圾收集器是不会清理的,因为容器对象仍然引用着他。如果此时针对该容器的应用仅限于查找,而不是遍历的话,那么该对
都知道,我前段时间说想去做嵌入式,那么51单片机的入门是必不可少的,虽然我在这之前就预感到了硬件对应的ide可能不会那么友好,但是我是万万没想到他这么不友好,下面我们看这张图:
Windows 系统用久了,磁盘中就会产生大量的“垃圾”文件。这些文件有的是程序使用过的临时文件,有的是操作记录和日志信息等。因为往往不能被有效地清理干净,越积越多,导致用户的可用空间越来越小。同时也会因为碎片文件过多,使得系统的运行速度受到一定影响。 像我这种强迫症用户显然受不了这种状况,定期清理垃圾文件很有必要。 对于 Windows 系统,网上有一些现成的垃圾文件清理脚本。不过作为一个 Python 学习者,当然要自己动手来实现一个才合理嘛。 Python 的 os 模块,提供了较为丰富的处理系统文件
– Keil 5安装包 链接:https://pan.baidu.com/s/1QitX09pqh6uZVdjj48Dllw 密码:69yx
ADC电压转换和温度转换(通过开发板上有输入电压调节 电位器进行电压转换,通过核心芯片进行温度转换)
在实际开发中,会遇到很多要判断一个元素是否在某个集合中的业务场景,类似于垃圾邮件的识别,恶意ip地址的访问,缓存穿透等情况。类似于缓存穿透这种情况,有许多的解决方法,如:redis存储null值等,而对于垃圾邮件的识别,恶意ip地址的访问,我们也可以直接用 HashMap 去存储恶意ip地址以及垃圾邮件,然后每次访问时去检索一下对应集合中是否有相同数据。
3.9.0是源码版本,可以看到全部源码,也方便学习;后续的版本都是提供lib库文件,不再提供源码了。
希望这一篇文章能让你对 Map 有更好的理解,或者能够帮你理解 Map 和 WeakMap
Lua语言使用自动内存管理。程序可以创建对象,但却没有函数来删除对象。Lua语言通过垃圾收集自动删除称为垃圾的对象,从而将程序员从内存管理的绝大部分负担中解放出来。
之前在LVGL模拟器CodeBlock上写了一个多语言的demo,用于学习LVGL多国语言的应用,如下所示:
领取专属 10元无门槛券
手把手带您无忧上云