嵌入式
文章平均质量分 73
关于C51 STM32嵌入式开发工作记录,分享大家,不喜勿喷!
小学徒666
这个作者很懒,什么都没留下…
展开
-
SEGGER RTT打印调试信息之 -——华大MCU
跳呀跳就找到了这个buf刚好是我刚说的0-15通道,每个通道都是一个uchar,到此知道打印工具。转载 2024-02-07 11:06:43 · 313 阅读 · 0 评论 -
Use Configuration Wizard in Context Menu
Configuration Wizard翻译过来即配置向导,它是由具有特殊规则的语法构成的图形化配置菜单,可通过在图形化界面配置程序相关参数,而不需要在具体的代码中修改。Configuration Wizard有点类似于Markdown,所见即所写,它使用文件注释的形式来构建菜单,它支持汇编、C/C++以及初始化文件(如.s文件)。如下图,先展示一张直观的配置界面,再以此界面以及源码来详细地介绍它的实现方法。转载 2024-02-05 16:17:25 · 256 阅读 · 0 评论 -
嵌入式软件开发:自上而下|自下而上开发思想
链接:https://www.zhihu.com/question/30567850/answer/48645759你开始欣赏到纯 C代码所带来的 “美感” 了,即简单性和可拆分性。代码是自底向上构造,一个模块只做好一个模块的事情,任意拆分组合。对于有参考的 OOP系统建模,自顶向下的构造代码抽象方法是有效率的,是方便的,对于新领域,没有任何参考时,刻意抽象会带来额外负担,并进一步增加系统耦合性,设计调整,往往需要大面积修改代码。有兴趣你可以读读《Unix编程艺术》,OOP的思维模式,是大一统的;C转载 2022-01-19 15:02:21 · 639 阅读 · 0 评论 -
extern “C“ 用法详细说明
转载:extern"C"的用法(一)_Sean_新浪博客extern"C"的用法(一)首先,先看一下下面这个例子:图1案例它到底有什么用呢,这样的问题会出现在面试or笔试中,我觉得作为一个学C++的童鞋,应该了解一下。下面我就从以下几个方面来介绍它:1、#ifdef _cplusplus/#endif _cplusplus 2、extern "C" 2.1、extern关键字 2.2、"C" 2.3、小结extern "C" 3、C和C+...转载 2022-01-13 15:26:29 · 39508 阅读 · 3 评论 -
markDown 下载安装教程
转载:MarkDown下载和安装 - 简书一、下载 链接:https://pan.baidu.com/s/1HqnKWXDUpxHvF6TtVl6BKA 提取码:h4vt二、安装1、第一步:解压文件2、第二步:点击markdownpad2-setup.exe,进行安装3、第三步:安装完成后打开软件,点击help,然后选择Upgrade to MarkDownPad Pro,会出现如图所示的界面4、点击En...转载 2022-01-11 17:23:47 · 19884 阅读 · 10 评论 -
keil 中加入c++编程 配置工程说明
转载:让你的 STM32Cube KEILV5 + HAL库工程支持C++开发_wmdscjhdpy的博客-CSDN博客_keil5支持c++吗前言最近这段时间在弄一个新的STM32F4的项目,因为工程比较庞大,然后各种类型也比较复杂,在封装整理的时候就非常头疼,很想通过C++的类,继承,多态的方式来让代码变得清晰简单。在网上翻阅了比较多的相关资料,发现很多博客所说的方法要么太复杂,要么不能完美兼容Cube。随着ST对HAL库的不断更新,各类驱动包其实都已经悄悄的在各种头文件上加入了 extern “转载 2022-01-11 10:38:15 · 7502 阅读 · 0 评论 -
软件版本规范说明
软件版本号规范[TOC]软件版本阶段说明Base版:此版本表示该软件仅仅是一个假页面链接,通常包括所有的功能和页面布局,但是页面中的功能都没有做完整的实现,只是做为整体网站的一个基础架构。 Alpha版:此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改。 Beta版:该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI。 RC版:该转载 2022-01-07 16:33:29 · 404 阅读 · 0 评论 -
嵌入式软件架构设计(转载)
嵌入式软件架构设计实际该怎么做?一错误的示范最近公司新招了一个做嵌入式软件开发的同事,该同事是从上海的某一个上市公司出来的,因为我们这边人手不够,因此把他安排了去负责一个新产品的研发,前期让他负责加速度计、NB-IOT、舵机、外置Flash的功能测试,测试完成之后,准备让他做一个该产品的概要设计。然后他花了2个星期的时间,给我们写出来一个概要设计,说实话,我看到这个概要设计,我就觉得是刚毕业的大学生写的。版本一的架构设计2.1系统体系结构系统分为两层:硬件驱动层、应用层。2..转载 2021-12-24 16:17:40 · 2435 阅读 · 0 评论 -
linux 搭建samba方法及注意事项
每次搭建Linux Ubuntu虚拟机都要配置的samba,方法与大家share一下:1. 安装samba和系统共享模块$ sudo apt-get install samba$ sudo apt-get installkdenetwork-filesharing2. 创建samba共享目录$ mkdir /home/samba$ chmod 777 /home/samba3. 备份并编辑smb.conf允许网络用户访问$ sudo cp /etc/samba/smb....原创 2021-12-19 17:29:39 · 3142 阅读 · 0 评论 -
ENV 工程不能更新软件包列表问题
当在ENV工具中执行命令 pkgs --upgrade命令提示如下时:fatal: unable to access 'https://github.com/.../.git': Could not resolve host: github.com可以打开Git Bash here命令框然后做如下配置:1:git config --global --unset http.proxy2: git config --global --unset https.proxy然后重...原创 2021-10-22 16:21:32 · 271 阅读 · 0 评论 -
STM32F429 使用FMC sram cubeMX配置记录
配置FMCvoid fmc_port_init(void){ SRAM_HandleTypeDef hsram; FMC_NORSRAM_TimingTypeDef Timing = {0}; memset(&hsram,0,sizeof(hsram)); hsram.Instance = FMC_NORSRAM_DEVICE; hsram.Extended = FMC_NORSRAM_EXTENDED_DEVICE; ...原创 2021-09-24 17:46:46 · 1008 阅读 · 1 评论 -
stm32 ota升级
转载:STM32在线升级OTA,看这一篇就够啦~ - 云+社区 - 腾讯云 (tencent.com)简介本文主要讲解在线升级(OTA)的基础知识, 主要是针对IAP OTA从原理分析, 分区划分, 到代码编写和实验验证等过程阐述这一过程. 帮助大家加深对OTA的认识.1. OTA基础知识什么是BootLoader?BootLoader可以理解成是引导程序, 它的作用是启动正式的App应用程序. 换言之, BootLoader是一个程序, App也是一个程序, BootLoader程序是转载 2021-09-07 15:18:43 · 1101 阅读 · 4 评论 -
记录ota升级固件-Ymodem方式升级 方法 以及 注意事项
1、首先要下载OTA Downloader软件包问题:在用ENV下载的时候总是失败解决方法:检查网络连接是OK的,用其他同事的电脑下载也是失败,后来直接通过github下载,后来用其他同事的电脑的另一个工程下载接可以,所以也有可能是工程的问题2、下载好工程后,按照官网的介绍配置工程以及下载Bootloader官网介绍操作流程连接:STM32通用Bootloader (rt-thread.org)注意2.1 ota_downloader是依赖FAL软件包的,按照官...原创 2021-09-03 17:29:29 · 827 阅读 · 0 评论 -
单片机程序不带系统的架构
通过定时器控制后台任务,每5ms执行切换一个任务,根据事件类型可以区分不同类型的任务,对于外界按键类的操作响应,只有当前任务会做出响应,除当前任务外,其它的都为后台任务voidIt_watchdog (void){}#define TASK_1_FUNC It_watchdog//遍历执行任务函数指针typedef struct{ void (*task_func...原创 2021-09-03 16:43:31 · 145 阅读 · 0 评论 -
STM32CubeMX 配置stm32f429 lan8742a流程
转载:https://blog.csdn.net/weixin_43482414/article/details/108851083?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-3&spm=1001.2101.3001.4242原理图功能 IORMII_TX_EN PB11RMII_TXD0 PG13RMII_TXD1 PG14RMII_RXD0 PC4RMI...转载 2021-09-03 16:42:42 · 2516 阅读 · 0 评论 -
keil5生成bin文件配置方法
KEIL / MDK生成BIN文件的两种方式1 KEIL工程配置入口点击“魔术棒”图标(Option for Target)在After Build/Rebuild选项卡中,勾选 "Run # 1",在后面输入框写入bin文件生成方式,见2.1、2.22 输出Bin文件配置KEIL生成bin文件,根据输入命令的相对\绝对路径来分,有两种方式,都是通过自带的fromelf.exe来生成2.1 绝对路径方式绝对路径方式,如果更换电脑等,需要手动修改MDK工具链(formelf.e..转载 2021-09-01 15:07:24 · 5005 阅读 · 1 评论 -
Source Tree 连接华为云操作流程-----详细说明
转载:https://bbs.huaweicloud.com/blogs/178565【摘要】 前言: 俗话说的好工欲善其事必先利其器,Git分布式版本控制系统是我们日常开发中不可或缺的。目前市面上比较流行的Git可视化管理工具有SourceTree、GithubDesktop、TortoiseGit,综合网上的一些文章分析和自己的日常开发实践心得个人比较推荐开发者使用SourceTree,因为SourceTree同时支持Windows和Mac,并且界面十分的精美简洁,...前言: 俗话说的转载 2021-02-19 17:07:24 · 674 阅读 · 0 评论 -
RTThread中falut定位方法
转载:https://blog.csdn.net/suny1234/article/details/89419075在《RTThread中HardFault_Handler分析》一文中已经分析了RTThread中对于fault中断的处理方法。接下来讲解如何根据错误输出信息对程序出现fault的位置进行定位。rtthread_simulator_v0.1.0 工程中的main.c中的我们添加以下3行代码void(*fp)(void) ; //1int main(void){ f转载 2021-01-23 19:37:51 · 1743 阅读 · 0 评论 -
HardFault错误信息的挖掘
转载:http://blog.sina.com.cn/s/blog_68300e2f0102wq94.html当前在我司代码中关于各种硬件异常的处理基本上是在屏幕上打印错误类型,并没有进一步的处理。本文讨论了一些针对Cortext-M3/M4处理器的方法,通过对寄存器数据的解读,在大多数情况下能够定位产生HardFault的位置和原因,方便在不能使用仿真器的时候或错误难以复现的情况下用来定位问题。最后用一个实例,描述了通过本文所述方法打印错误信息,并定位错误位置和原因的过程。 背景知识简介转载 2021-01-23 19:36:40 · 2191 阅读 · 0 评论 -
RT-Thread编程手册
转载:https://www.bookstack.cn/read/rtthread-manual-doc/10.7.md转载 2021-01-23 19:34:37 · 720 阅读 · 0 评论 -
HEX2BCD 实测可用
转载:https://blog.csdn.net/sdwuyulunbi/article/details/4741721在写程序时,经常需要进行BCD码和ASCII码的转换。下面是我常用的转换程序,如果有需要,直接调用就行了。 unsigned char BCD2HEX(unsigned char bcd_data) //BCD转为HEX子程序 { unsigned char temp; temp=(bcd_data/16*10 + bcd_data%1.转载 2021-01-15 01:45:45 · 790 阅读 · 0 评论 -
正则表达式使用详解
转载:https://www.zhihu.com/question/48219401/answer/742444326作者:老刘链接:https://www.zhihu.com/question/48219401/answer/742444326来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。但很神奇的是:无论你大学选.转载 2020-11-20 19:15:47 · 2601 阅读 · 0 评论 -
sscanf函数使用详解
转载:https://www.cnblogs.com/wwjyt/p/3182892.htmlsscanf函数详解函数原型:Int sscanf(string str,string fmt, mixed var1, mixed var2 ...);int scanf(constchar*format [,argument]...);说明:sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。其中的format可以是一个或多个{%[*转载 2020-11-20 19:09:43 · 3491 阅读 · 0 评论 -
路径中的‘.‘和‘..‘还有‘./‘和‘../‘都是什么意思
知识点点滴滴积累,记录一下。转载:https://www.cnblogs.com/xc90/articles/10257402.html这和linux系统是一样的,. 表示当前目录.. 表示当前目录的上一级目录。./表示当前目录下的某个文件或文件夹,视后面跟着的名字而定../表示当前目录上一级目录的文件或文件夹,视后面跟着的名字而定。例如:文件夹 a下面有 文件夹b c 和文件 d。文件夹b下面有e.php 和文件f。则e中的 . 表示 文件夹b./f 表示b下面的文件f。..转载 2020-11-18 10:07:51 · 1027 阅读 · 0 评论 -
字符指针与字符数组真正的区别
转载:https://blog.csdn.net/on_1y/article/details/13030439字符指针与字符数组真正的区别问题缘起先看一个示例示例1#include <stdio.h>int main() { char *p = "hello"; char q[] = "hello"; printf ("p: %s\n", p); printf ("q: %s\n", q); return 0;}上面的转载 2020-10-11 10:25:10 · 83 阅读 · 0 评论 -
【C语言】‘\0‘、‘0‘、‘ ‘、“0”、0的区别详解
转载:http://www.51hei.com/bbs/dpj-105683-1.html【C语言】'\0'、'0'、' '、“0”、0的区别详解文章内容部分整理自网络!若有冒犯请指出,我们及时更正!在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字符号还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都转载 2020-10-11 09:29:29 · 2548 阅读 · 0 评论 -
AT指令详解,错误代码详解
转载:https://blog.csdn.net/u011784994/article/details/54603549?utm_source=blogxgwz4&utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase一、转载 2020-09-25 10:04:44 · 4525 阅读 · 0 评论 -
MCU端增加paho_mqtt协议,通过EC20模组将数据传输到阿里云(详细)
大家好,前几天跟大家分享了一篇关于EC20模组连接阿里云的博客,连接如下,这个片博文将的是MCU端发发送AT_MQTT指令给EC20模组,paho_mqtt协议在模组这端,将数据传输到阿里云,这样做的缺点是灵活性不够好,为了更方便的修改一些参数,我们现在讲paho_mqtt协议移植到MCU端。https://blog.csdn.net/weixin_40593838/article/details/108481485这里我们主要是用RT-RTREAD的一些组件来完成移植,第一次用可能有些手生,多练习原创 2020-09-17 15:36:52 · 2303 阅读 · 0 评论 -
stm32芯片解除写保护方法(详细)
一. 写保护1. 目的 将Flash设置为写保护的目的,是为了防止其他人通过J-Link,ULINK2等仿真器,将Flash中的程序读取出来(设想一下,你辛辛苦苦研发的产品,别人通过仿真器将程序读取出来,再copy一下产品的硬件,就可以生产)。 可以通过将Flash设置为读保护来保护自己的程序。2. 开发环境适用于STM32F1和F4系列(其他系列没有用过);F1系列的库:STM32F10x_StdPeriph_Lib_V3.5.0F4系列的库:STM32F4xx_DSP_S...原创 2020-09-15 11:32:23 · 9595 阅读 · 3 评论 -
EC20连接阿里云操作流程,AT_MQTT协议连接,详细
实际开发环境:1阿里云平台创建产品1.1登录阿里云物联网平台,新用户首先注册账号1.1.1 网址链接:https://help.aliyun.com/document_detail/73728.html?spm=a2c4g.11174283.6.571.3a8b1668Vmv5CZ,这个连接是阿里云物联网平台使用流程说明,可以在这里注册和登录账号1.1.2 建议使用淘宝或支付宝账号注册登录1.1.3 我这里使用的是淘宝账号登录,输入账号和密码1.1.4输入完账号,登...原创 2020-09-09 11:00:51 · 5024 阅读 · 1 评论 -
RT-Thread源代码根目录详细说明
RT-Thread源代码根目录详细说明转载:https://blog.csdn.net/weixin_42560250/article/details/105518852我从RT-Thread的GitHub官网上面下载了3.1.2的内核源码,下载链接如下https://github.com/RT-Thread/rt-thread/tags解压出压缩包后发现主目录下有很多文件和文件夹,查阅了一些资料后才搞明白,特将目录层级说明如下:目录 说明 github ...转载 2020-09-02 11:12:13 · 582 阅读 · 0 评论 -
STM32通电复位重启才可以运行的解决方案
做一个小设备遇到了一个问题,程序仿真的时候一切运行正常,可是断电重新上电后就会出问题,如果手动复位也没有问题,查了半天没有找到原因,由于不擅长硬件电路,从软件上解决这个问题,因为手动复位可以解决这个问题那我就给他软件复位,所以在程序启动的时候增加一个标志位,第一次启动,标志位置位,保存标志位,软件复位,复位再启动,检查标志位,置位的时候正常运行,并清除标志位,保存标志位,等下次断电重启的时候,重复这里逻辑操作,这样程序就可以跑起来了。这也是无奈之举,有资源的或擅长硬件的最好找到问题根源,从根本上解决问题。原创 2020-08-30 15:51:29 · 4276 阅读 · 4 评论 -
RT-Thread源码下载介绍
转载:https://blog.csdn.net/RootCode/article/details/84066981RT-Thread 源码下载应用笔记摘要本文将详细介绍如何获取 RT-Thread 源代码。1本文的目的和结构1.1本文的目的和背景RT-Thread 源代码托管在 GitHub,对于不熟悉 GitHub 的新手,初次接触 RT-Thread 不知道如何从 GitHub 获取 RT-Thread 源代码。本文档将一步步介绍如何从 GitHub 获取 RT-Threa..转载 2020-09-09 11:29:28 · 1803 阅读 · 0 评论 -
2020-08-18
转载:https://bbs.huaweicloud.com/blogs/178565华为云连接:https://auth.huaweicloud.com/authui/login.html?id=hw_hanchen#/login【摘要】 前言: 俗话说的好工欲善其事必先利其器,Git分布式版本控制系统是我们日常开发中不可或缺的。目前市面上比较流行的Git可视化管理工具有SourceTree、GithubDesktop、TortoiseGit,综合网上的一些文章分析和自己的日常开发实践心得个人比转载 2020-08-18 14:05:10 · 132 阅读 · 0 评论 -
内核基础
转载:https://www.rt-thread.org/document/site/programming-manual/basic/basic/本章介绍 RT-Thread 内核基础,包括:内核简介、系统的启动流程及内核配置的部分内容,为后面的章节奠定基础。RT-Thread 内核的简单介绍,从软件架构入手讲解实时内核的组成与实现,这部分给初学者引入一些 RT-Thread 内核相关的概念与基础知识,让初学者对内核有初步的了解。学完本章,读者将会对 RT-Thread 内核有基本的了解,知道内核转载 2020-08-05 17:17:37 · 415 阅读 · 0 评论 -
【STM32】系统时钟RCC详解(超详细,超全面)
转载:https://blog.csdn.net/as480133937/article/details/988455091什么是时钟时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。为什么 STM32 要有多个时钟源呢?STM32本身十分复杂,外设非常多 但我们实际使用的..转载 2020-08-05 14:20:33 · 3089 阅读 · 0 评论 -
STM32CubeMX 简介
转载:https://blog.csdn.net/as480133937/article/details/98885316一、STM32CubeMX 简介1、STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C...转载 2020-08-05 13:21:38 · 9348 阅读 · 0 评论 -
flash loader下载使用说明
转载:https://blog.csdn.net/weixin_45456099/article/details/107492742一般只能通过三种方式下载程序到stm32单片机中:1.JTAG 2.ISP 3.IAP具体可参考:单片机程序下载方式ISP、IAP、JTAG接下来介绍如何ISP烧录代码:要通过ISP方式下载程序,需要用到单片机内部自带的Bootloader,这个Bootloader是预制在单片机内部的,出厂自带的,它在出厂后就不能修改或擦除。因此首先要将BOOT0=1,BOOT1转载 2020-07-28 21:43:50 · 7830 阅读 · 0 评论 -
STM32串口烧录
转载:https://blog.csdn.net/weixin_42108484/article/details/80519038一、首先需要一根USB转TTL线,接到开发板UART1和电脑的USB,短接对应的跳线帽(boot0和boot1)。一般Boot0接3.3,Boot1接GND按复位按键,即可实现下载二、安装串口驱动,插上串口线,双击安装即可。点击我的电脑--管理--设备管理器可见是否安装成功三、打开FlyMcu软件,搜索串口,选择波特率、指定下载执行文件路径.转载 2020-07-28 21:09:46 · 10795 阅读 · 0 评论 -
内存池详解
转载:http://www.ibm.com/developerworks/cn/linux/l-cn-ppp/index6.html6.1 自定义内存池性能优化的原理 如前所述,读者已经了解到"堆"和"栈"的区别。而在编程实践中,不可避免地要大量用到堆上的内存。例如在程序中维护一个链表的数据结构时,每次新增或者删除一个链表的节点,都需要从内存堆上分配或者释放一定的内存;在维护一个动态数组时,如果动态数组的大小不能满足程序需要时,也要在内存堆上分配新的内存空间。6.1.1 默认内存管理函数..转载 2020-07-28 15:55:17 · 471 阅读 · 0 评论