- 博客(35)
- 收藏
- 关注
原创 STM32F103单片机工程移植到航顺单片机HK32F103注意事项
1、STM32F103稳定,价格贵,大牌厂商生产,服务及时,安全性极差;2、HK32F103性能稍弱,价格便宜,国内公司生产,服务一般,安全性稍好;
2024-06-06 16:55:51
1198
原创 iTOP-4412-裸机开发(环境搭建)
裸机程序是指不依赖 Linux 等操作系统,直接在硬件之上运行的程序。比如单片机开发的时候我们写的代码就属于裸机程序。另外我们也可以把 bootloader 看成是一个裸机程序。因为它的运行不需要操作系统的支持,也是个直接运行在板子硬件之上的程序。对于初学者来讲,并不推荐学习更多的裸机程序,因为在高端的 ARM 系统开发中一般要基于Linux 来进行;用裸机程序来开发产品并不能发挥硬件的性能,对自己嵌入式技术的学习也没有多大的帮助。
2024-05-05 14:02:56
1129
原创 Linux基础-Makefile
工程管理器,顾名思义,是指管理较多的文件。Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。Make将只编译改动的代码文件,而不用完全编译。编译的四大过程;1、预处理:用于将所有的#include头文件以及宏定义替换成其真正的内容,预处理之后得到的仍然是文本文件,但文件体积会大很多。如:gcc -E hello.c -o hello.i。
2024-03-23 16:44:04
908
原创 关于Ubuntu中 E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)解决方案
在中,有时候运用s安装软件时,会出现以下的情况在这个时候,主要是因为。
2024-03-19 22:33:23
884
原创 Linux 基础-查看和设置环境变量
在 Linux中,是一个很重要的概念。Shell,其是保存在变量PATH中。环境变量是一个可以被赋值的字符串,赋值范围包括数字、文本、文件名、设备以及其他类型的数据。值得一提的是,Linux 系统中环境变量的名称一般都是大写的,这是一种约定俗成的规范。1,使用echoecho $PATH;使用env查看当前系统定义的所有环境变量;使用set查看所有本地定义的环境变量。查看PATHunsetset也可以设置某个环境变量的值。清除环境变量的值用 unset 命令。如果未指定值,则该变量值将被设为 NULL。
2024-03-16 23:31:55
2067
原创 C 语言函数宏的几种封装方式
函数宏,即包含多条语句的宏定义,其通常为某一被频繁调用的功能的语句封装,且不想通过函数方式封装来降低额外的弹栈压栈开销。a = b;b = tmp但上述的宏具有一个明显的缺点:当遇到 ifwhile等语句且不使用花括号仅调用宏时,实际作用范围在宏的第一个分号后便结束。即a = b和b = tmp均不受控制语句所作用。因此,在工程中,一般使用三种方式来对函数宏进行封装,分别为{}和({})。下文将一一对三种方式进行分析,比较各自的优劣点。综上,在{}和 ({})
2023-09-07 15:42:59
735
原创 《嵌入式-开源项目Letter Shell》一个小而美的嵌入式shell
熟悉Linux的朋友的都知道,shell包裹在内核之外的人机交互界面,用于用户和内核之间打交道的功能,类似于windows CMD。通过Shell将输入的命令与内核通讯,好让内核可以控制硬件开正确无误的操作工作。Shell有着不同的分类,比如Bourne shell(sh),Korn shell(ksh)、C shell (csh)、Bourne-again shell(bash)、tcsh。其中最常用的有csh和bash。
2023-07-22 16:47:07
2013
原创 单片机要这样保护临界区
今天给大家分享的是Cortex-M裸机环境下,临界区保护的三种实现。搞嵌入式玩过 RTOS 的小伙伴,想必都对 OS_ENTER_CRITICAL()、OS_EXIT_CRITICAL() 这个功能代码特别眼熟,在 RTOS 里常常会有多任务(进程)处理,有些情况下一些特殊操作(比如 XIP 下 Flash 擦写、低功耗模式切换)不能被随意打断,或者一些共享数据区不能被无序访问(A 任务正在读,B 任务却要写),这时候就要用到临界区保护策略了。
2023-07-07 11:02:19
300
原创 Linux搭建 ESP8266_RTOS_SDK 3.0 常见错误
1、git拉取最新代码时报错:gnutls_handshake() failed: The TLS connection was non-properly terminated.解决办法:git config --global --unset https.https://github.com.proxygit config --global --unset http.https://github.com.proxy2、make menuconfig 时候报错因为...
2022-05-04 13:46:33
1440
原创 KEIL5 背景设置
1、找到自己Keil5的安装路径2、打开安装路径下的UV4文件3、.将下面的配置复制到global.prop文件中(直接替换所有) (可以将自己原有的配置保存下来)# properties for all file typesindent.automatic=1virtual.space=0view.whitespace=0view.endofline=0code.page=936caretline.visible=1highlight.matchin...
2022-04-14 16:23:46
3503
原创 真的明白Code、RO-data、RW-data和ZI-data吗?
一、Code、RO-data、RW-data和ZI-dataSTM32单片机在keil开发环境下编译完成后,会显示:Program Size: Code=XXXX RO-data=XXXX RW-data=XXXX ZI-data=XXXX如图1所示:其中Code、RO-data、RW-data和ZI-data是什么意思呢?01:Code 代表执行的代码,程序中所有的函数;02:RO-data 代表只读数据,程序中所定义的全局常量数据;03:RW-data代表已初始化的读写数据,..
2022-04-05 23:15:13
10155
原创 HTTP详解
文章主要以一次HTTP请求的整个过程来讲解(DNS解析不讲):HTTP起源、TCP/IP协议、建立TCP连接、客户端请求、服务端响应、断开TCP连接。
2022-03-18 15:53:29
2950
原创 TCP/IP协议族详解
目录网络层1、IP协议1.1、IP地址1.2、IP协议头2.ARP及RARP协议3、ICMP协议传输层1、TCP和UDP协议2、TCP和UDP协议的一些应用3、TCP“三次握手”和“四次挥手”3.1、三次握手3.2、四次挥手4、TCP流量控制5、TCP拥塞控制5.1、慢开始和拥塞避免5.2、快重传和快恢复面试问题整理TCP/IP不是一个协议,而是一个协议族的统称。里面包括IP协议、IMCP协议、TCP协议。TCP/IP协议模型,
2022-03-18 14:19:38
5638
原创 EEPROM(IIC总线)
目录一、IIC串行总线的组成及工作原理1、I2C串行总线的组成及工作原理2、I2C串行总线概述3、I2C总线的数据传送1)、数据位的有效性规定2)、起始和终止信号3)、数据传送格式4)、总线的寻址4、I2C总线器件的扩展1)、扩展电路二、串行E2PROM的扩展原理部分(AT24C02)1、串行E2PROM典型产品2、写入过程3、读出过程4、AT24CXX存储器工作原理三、AT24C02驱动程序编写一、IIC串行总线的组成及工作原理...
2022-03-15 11:50:48
4948
1
原创 C语言数据结构-队列
队列的特征: 特殊的线性表,先进先出(FIFO) (1)数据:对于非空的队列,表头没有直接前驱,表尾没有直接后继,其他有且仅有一个直接前驱和一个直接后继。 (2)操作:只允许在表尾插入数据,在表头删除数据...
2022-03-13 12:13:08
2751
1
原创 UART和USART的区别(UART vs USART)
很多工程师都知道UART和USART都是一样的,没有区别。但实际上,两者彼此不同,并且具有不同的属性。这就是我在这里写一篇文章UART vs USART的原因。但在研究 UART 和 USART(UART 与 USART)之间的主要区别之前,我想先解释一下什么是异步和同步通信。异步串行传输:在异步通信中,发送方和接收方之间没有公共时钟。它广泛用于面向字节的传输,这意味着它一次可以发送 1 个字节或字符。与同步相比,异步通信速度较慢,并且还具有启动和停止位的开销。在异步通信中...
2022-03-12 21:29:10
27310
2
原创 SysTick定时器
1、简介Cortex‐M3处理器内部包含了一个简单的定时器。因为所有的CM3芯片都带有这个定时器,软件在不同 CM3器件间的移植工作得以化简。该定时器的时钟源可以是内部时钟,或者是外部时钟。不过,STCLK的具体来源则由芯片设计者决定,因此不同产品之间的时钟频率可能会大不相同,你需要查找芯片的器件手册来决定选择什么作为时钟源。Cortex-M3 的内核中包含一个 SysTick 时钟。SysTick 为一个 24 位递减计数器,SysTick 设定初值并使能后,每经过 ...
2022-02-18 10:11:16
1293
原创 ubuntu使用ifconfig只能查看本地回环网卡,没有ens33
前提条件首先确认你的ubuntu的网络连接模式是桥接模式!!!问题描述通过ifconfig只能看到lo本地回环网卡通过ifconfig -a能正常ens33网卡,但是无法上网问题 右上角网络图标也不见了解决办法 1、执行以下两个命令sudo dhclient ens33ifconfig 目前能够看到ip地址,但是Desktop右上角网络图标还没有显示。 2、...
2021-12-24 10:56:11
2054
1
原创 51单片机串口通信原理
计算机串行通信基础通信有串行通信和并行通信两种方式串行通信:将数据字节分为一位一位的形式在一条数据线上逐个传送。如下图所示 串行通信特点:传输线少,长距离传送时成本低,且可以利用电话网等现成设备,但数据的传送控制比并行通信复杂。 并行通信: 通常是将数据字节的各位用多条数据线同时进行传送。如下图所示 并行通行特点:控制简单,传输速度快;但是由于传输线较多,长距离传输时成...
2021-12-16 16:34:21
11625
1
原创 C语言数据结构 - 栈
栈的定义 类似很多软件都有撤销的操作,这其实就是用栈这种方法来实现的,当然不同的软件具体实现代码会有差异,不过原理大多都是一样的。 栈(stack)是限定仅在表尾进行插入和删除操作的线性表。我们把允许插入和删除的一端称为栈顶(top),另一端称为栈低(bottom),不含任何数据元素的栈称为空栈。栈又称为后进后出(Last In First Out)的线性表,简称LIFO结构。栈的顺序存储结构及实现它是顺序表的一种,具有顺...
2021-11-24 16:28:19
2115
1
原创 51单片机中断系统
单片机中断系统的概念什么是中断,我们从一个生活中的例程引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。仔细研究一下生活中的中断,对于我们学习单片机的中断也很有好处。...
2021-11-07 12:42:58
4230
原创 51单片机定时器/计数器
一、课前须知:1、51单片机有两组定时器/计数器,因为既可以定时,也可以计数,所以称之为定时器/计数器。2、定时器/计数器和单片机CPU是相互独立的。定时器/计数器的工作过程是自动完成的,不需要CPU的参与。3、51单片机中的 定时器/计数器 是根据 机器内部的时钟 或者是 外部的脉冲信号 对寄存器中的数据加1。4、有了 定时器/计数器 之后,可以增加单片机的效率,一些简单的重复加1的工作可以交给 定时器/计数器 处理。并且定时器还可以实现精确定时的作用。让CPU去处理一些其他复杂的事情。
2021-11-07 11:45:37
26499
2
原创 C语言scanf()和sscanf()函数详解
sscanf()与scanf()类似,都是用于输入的,只是scanf()以键盘(stdin)为输入源,sscanf()以固定字符串为输入源一:scanf()头文件:#include <stdio.h>函数原型:int scanf(const char *format,...);函数功能:按指定格式从键盘输入数据,存入地址表指定的存储单元中,并按回车键结束。函数参数:format 指定输入格式,后面跟要输入的变量的地址表,为不定参,用"..."表示。函数返回.
2021-10-06 14:25:11
1812
原创 C语言strchr函数:字符串查找
如果需要对字符串中的单个字符进行查找,那么应该使用 strchr 或 strrchr 函数。一:strchr1.1、strchr 函数原型:char *strrchr(const char *s, int c);1.2、函数说明:表示在字符串 s 中查找字符 c,返回字符 c 第一次在字符串 s 中出现的位置,如果未找到字符 c,则返回 NULL。也就是说,strchr 函数在字符串 s 中从前到后(或者称为从左到右)查找字符 c。1.3、返回值:...
2021-10-06 13:37:23
8416
原创 C语言strtok()函数:字符串分割
1、头文件:#include <string.h>2、定义函数:char * strtok(char *s, const char *delim);分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。3、函数说明:strtok()用来将字符串分割成一个个片段。参数s 指向欲分解的字符串,参数delim 则为分隔字符串;当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为...
2021-10-06 13:27:58
2643
原创 C语言-右左法则
右左法则是一个既著名又常用的方法。不过,右左法则其实并不是c标准里面的内容,它是从c标准的声明规定中归纳出来的方法。c标准的声明规则,是用来解决如何建立声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的:the right-left rule: start reading the declaration from the innermost parentheses, go right, and then go left. when you encounter
2021-08-13 10:55:28
197
原创 Rock Pi X刷Ubuntu系统
1、准备一个16G或者16G以上的U盘。2、下载一个刷机工具。网盘链接:https://pan.baidu.com/s/1v98f-AmBOCr8wwrCmJFCDw提取码:if3q3、下载一个ubuntu系统镜像,可在官方网站自行下载,官网地址。也可通过链接下载(注意:网盘链接镜像为ubuntu-20.04.1-desktop-amd64),网盘链接:https://pan.baidu.com/s/1IOTvWitdFvX4M890OZNMog提取码:gb034、打开刷...
2021-07-20 11:32:35
1927
2
原创 普中单片机开发板 HC6800-EM3 v3.0光盘资料
V3.0V3.0光盘资料在网上太少,好不容易找到一个,居然要收费,收费也就算了,下载下来原理图和官方提供的还不一致。以下是本人花了一小会儿时间才找到的,我把百度网盘链接分享出来,链接永久生效,希望能帮助到在座的各位。链接:https://pan.baidu.com/s/1cE8Ju2J2pRTWbhHo35X_ng 提取码:pdn0 ...
2021-07-16 10:23:42
5841
43
原创 ubuntu20.04 以root用户登录提示找不到用户
解决办法:1、在普通用户界面 使用sudo passwd root命令 设置root密码(可能与user password相同)。为了防止输入错误,系统会要求您输入两次密码。2、使用sudo passwd -u root解锁root帐号。3、编辑sudo vi /etc/gdm3/custom.conf,在[security]下面添加一行:AllowRoot=true4、编辑sudo vi /etc/pam 注释掉下面一行,如下:#auth required pam_.
2021-07-16 10:05:21
1969
原创 Ubuntu20.04 安装Vim报错
Ubuntu系统中,软件源文件地址为:/etc/apt/sources.list1.备份原来的源,将以前的源备份一下,以防以后可以用的。sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak2.打开/etc/apt/sources.list文件,在前面添加如下条目,并保存。sudo vim /etc/apt/sources.list(可将vim更换为自己熟悉的编辑器)#添加阿里源deb http://mirrors.aliyun
2021-07-08 20:45:20
809
原创 TL_AP1907GC-POE/GC 无线桥接(WDS)设置
一、WDS使用介绍 (无线桥接WDS)可以将多台无线路由器通过无线方式互联,从而将无线信号扩展放大。无线终端在移动过程中可以自动切换较好的信号,实现无线漫游。 本文指导将TL-AP1907GC-POE/GC当作副路由器,开启WDS桥接主路由器的设置方法。 设置之前,请您注意以下事项: 1、主、副路由器之间不需要(也不可以)连接网线; 2、无线桥接仅需要在副路由器上设置,以下操作指导均是在副路由器上进行; 3、务必确认主路由器的无线信号名称、无线密码以及无线..
2021-07-07 15:04:50
7017
原创 树莓派计算模块核心板底板Compute module 4 IO Board+树莓派计算模块核心板Compute module 4 CM4可扩展wifi蓝牙模块 emmc定制,烧录Ubuntu系统
EMMC 版本不可以使用SD卡1、 下载系统 点我下载最新版(带有桌面和推荐软件的镜像(Raspberry Pi OS with desktop and recommended software),建议EMMC 16G 或者CM4 lite 16G内存卡以上的储存空间使用。)2、 下载并以管理员权限打开软件rpiboot软件( 点我下载 ), 以安装驱动程序和启动工具。安装以管理员身份运行,成功之后在安装目录下有一个rpiboot.exe的应用。3、 将BOOT和GND连接 或者 将...
2021-07-06 20:33:08
2019
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人