自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

电子通信仔的学习杂记

文章主要是记叙本人的一些学习日记,希望大家有则取之,一起进步啦!

  • 博客(25)
  • 资源 (5)
  • 收藏
  • 关注

原创 【嵌入式linux】修改网口MAC地址

简述嵌入式linux应用层和uboot修改MAC地址的方法

2022-12-13 01:44:12 9368 1

原创 【嵌入式linux】uboot的env加密存储和解密加载

记录一种env分区的加密和解密加载方法

2022-11-18 00:46:17 2131

原创 【嵌入式linux】使用4G模块EC20自适应运营商和ppp拨号上网

在linux下使用4G模块EC20自适应运营商和ppp拨号上网

2022-10-25 00:23:35 4917 1

原创 【嵌入式linux】zynq7010的SPI驱动调试、完善

记使用zynq7010的PS侧外设SPI与模块进行通信时出现的问题

2022-10-24 23:46:52 2174

原创 【嵌入式linux】打开系统日志log功能

有时候在系统出现故障的时候,往往需要打开系统的日志功能进行定位系统log来分析。一、一般安装busybox默认会使能了syslogd工具和生成/etc/init.d/S01syslogd脚本然后执行syslog的守护进程,然后系统log会默认输出到/var/log/messages目录下。这种情况log功能已经使能,但是重启会清楚掉/var目录的文件,因此可以在S01syslogd修改一下脚本里面的命令参数,将log输出目录重定位到非易失性的存储区域,就可以在特定目录下看到系统的日志了。二、在buildro

2022-06-20 01:56:51 1588 1

原创 【嵌入式linux】U盘自动识别和挂载

通过udev机制(需要安装udev功能和内核支持udev),在/lib/udev/rules.d下面根据udev规则创建文件60-usbmount.rules添加下面内容测试:插上含有两个分区的U盘,查看文件系统挂载情况拔出U盘

2022-06-20 01:36:19 1450

原创 【嵌入式linux】linux上搭建嵌入式QT环境

嵌入式QT是嵌入式产品中常用的GUI,其实更像是一个C++图形库,但是可以跨平台使用,我们可以在windows开发QT程序,然后将QT程序移植到开发板上,大大方便了应用层工程师的开发。QT lib是连接不同平台的桥梁,不同的操作系统会有不同的QT lib,所以搭建嵌入式QT环境即在开发板上搭建QT库。QT在PC机的安装和使用就不多说啦,主要讲讲移植QT库。这里建议使用buildroot来搭建根文件系统,因为感觉buildroot涵盖了大部分常用的软件包和工具,配置也简单,可以很方便地移植各种软件组件。1

2022-06-02 22:31:24 1696

原创 软考嵌入式中级经验分享+真题教材

刚参加完2022上半年的嵌入式中级软考,emmm,结果如何不清楚,但是自我感觉良好吧,给大家分享点经验,希望能有所帮助。上午:上午考的是75道选择题满分75分。这里主要需要巩固的是理论,感觉上午的选择题太多基础东西要背了,除了计算机原理、嵌入式系统的,还有英语阅读理解、软件测试、系统项目管理之类杂七杂八的,普遍不难,看一遍教材有点印象即可,最重要的是一定要把真题做一遍真题做一遍真题做一遍,并且把全部解析看一看,记一记,举一反三,通过不难,祝福!下午:下午考五道大题15*5=75分。这里可能会涉及到部分理

2022-05-31 23:19:33 10632 28

原创 buildroot和在buildroot下新增包(动态库)

buildroot是一个构建嵌入式系统的工具,开发者可以根据对其进行配置实现自动生成交叉编译工具链(toolchain)、根文件系统(rootfs)、Linux内核映像(linux kernel)和目标引导程序(bootloader)。buildroot常用来构建根文件系统,不仅集成了 busybox,而且还集成了各种常见的第三方库和软件供用户选择,极大的方便了嵌入式Linux开发人员构建实用的根文件系统。一、buildroot使用1.下载安装源码: http://buildroot.org/downl

2021-08-07 15:39:49 3508

原创 Linux终端常用快捷键

Shift+Ctrl+T:新建标签页Shift+Ctrl+W:关闭标签页Ctrl+PageUp:前一标签页Ctrl+PageDown:后一标签页Shift+Ctrl+PageUp:标签页左移Shift+Ctrl+PageDown:标签页右移Alt+1:切换到标签页1Alt+2:切换到标签页2Alt+3:切换到标签页3Shift+Ctrl+N:新建窗口Shift+Ctrl+Q:关闭终端终端中的复制/粘贴:Shift+Ctrl+C:复制Shift+Ctrl+V:粘贴终端改变大小:F

2021-07-16 19:28:00 175

原创 【单片机】代码是如何在单片机上运行起来的?

浅谈:对于任何电子产品,硬件是软件运行的基础,而软件赋予了硬件灵魂,两者有机结合成为一个功能丰富、强大的系统。我们写的代码是如何在单片机上跑的呢?下面以比较简单的方式简述一下,如果还要研究很多细节实现的话,就要深入学习微机原理的知识啦。代码在单片机上跑起来,一般有6个步骤:1.写好源文件。2.准备好启动文件(一般半导体厂商提供,也可以自己根据需求进行裁剪编写)。这个文件直接是用汇编写的,主要完成三个工作:初始化堆栈,定义中断向量表,进行复位中断(初始化寄存器、时钟和跳转到main函数)。(1)初始

2021-03-23 22:52:52 5087

原创 【单片机】按键消抖及原理(硬件和软件方法详解)

浅谈:在设计单片机按键输入的时候,进行按键消抖是防止按键输入被CPU误读多次的必要手段。一、按键抖动通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几

2021-03-16 11:07:07 86948 12

原创 【C语言】输入字符串数组并排序

题目:输入n个字符串,并按照一定规则进行升序排序和输出我的排序规则:按照字符串里面英文字符的值之和#include<stdio.h>#include<string.h>#include<stdlib.h>#include<ctype.h>#define MAXNUM 10#define MAXLEN 20int mystrcmp(char *s1,char*s2) //可按照规则自行修改{ if(s1==NULL||

2021-03-10 17:35:22 2701

原创 【C语言】字符串和字符串数组的输入和陷阱

浅谈:C语言写程序时,因为没有字符串数据类型,所以字符串和字符串数组的输入也是一个难题和陷阱,这里讨论一下几种字符串输入情况。字符串输入函数:1.格式输入函数:int scanf("%s",字符数组名或指针);2.字符串输入函数:char* gets(字符数组名或指针);(1)相同点:字符串接受结束后自动加’\0’。(2)不同点(容易出错):①scanf :当遇到回车,空格和tab键就认为输入结束,会自动在字符串后面添加’\0’;但是回车、空格和tab键仍会留在输入的缓冲区中(如果连续多次sc

2021-03-10 14:02:07 3749 2

原创 【C语言】字符指针数组查找字符串

#include <stdio.h>#include <string.h>const char* str[] = { "Hello","abc","applef","man","C程序设计","指针数组" };const char* pdest = "指针数组";static int str_search(const char*key, const char**pstr, int num){ int i; for (i = 0; i < n

2021-03-09 11:48:48 8148

原创 【C语言】C实现C++类(以String类为例)

浅谈:面向过程的C语言算是比较偏底层的高级语言,而C++、C#、Java、Python等都是面向对象的高级语言,但是C语言却稳坐编程语言排行榜前列,说明C的应用十分广泛和强大,小到输出“HELLO,WOELD!”,点亮单片机的LED等,大到用来进行嵌入式系统开发、写操作系统和实现其他高级语言。掌握C语言有助于我们学习其他编程语言,甚至可以深入理解如何提高开发的效率。C++、C#、Java、Python等高级语言创造了多姿多彩、功能强大的软件世界,C语言创造了这些语言!进入例子:C实现C++的一个类

2021-03-07 17:19:28 1615

原创 【C语言】Socket网络编程与TCP/IP

struct sockaddr_in servaddr;socket(AF_INET, SOCK_STREAM, 0)memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = htonl(INADDR_ANY);//IP地址设置成INADDR_ANY,让系统自动获取本机的IP地址。servaddr.sin_port = htons(DEFAULT_P

2021-03-05 23:22:35 1716 1

原创 【C语言】多线程编程

多线程的优点:①与进程相比,成本低。创建和启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式;而多个线程运行于一个进程中,彼此间使用相同的地址空间,共享进程的数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。据统计,总的说来,一个进程的开销大约是一个线程开销的30倍左右,当然,在具体的系统上,这个数据可能会有较大的区别。②通信机制方便,适合大量数据传送

2021-03-02 12:24:11 1852

原创 【C语言】文件IO编程

文件IO编程:优点:适用于存取大量数据的场景,节省内存缺点:速度降低文件IO操作:打开->操作->关闭1.fopen函数:打开文件函数原型:FILE *fopen(const char *filename, const char *mode);打开成功会返回一个FILE类型指针,否则返回NULL(1)参数1:文件名(如果文件在当前目录下的话直接写文件名就行,否则要加上文件的路径)。(2)参数2:文件打开方式:由"r,w,a,t,b,+"六个字符拼成,各字符的含义是:r(re

2021-02-28 16:11:59 768

原创 【C语言】do{...}while(0)在宏定义中的作用

总结:do{…}while(0)在宏定义中的作用:使用do{…}while(0)构造后的宏定义不会受到大括号、分号等语句格式的影响,适用于各种场合下的调用。在C项目中,宏是提高程序可读性和算法性能必不可少的部分。而在linux内核源码和许多库中,我们经常会看到被频繁使用的宏会出现do{…}while(0)。例如:#define func(x) do{dosomething(x);}while(0)为什么要这样定义呢?这样写更简单呀:#define func(x) dosomet

2021-01-24 23:04:34 501

原创 【STM32】贪吃蛇小游戏

功能:贪吃蛇小游戏单片机:stm32f103c8t6用到的硬件资源:LED指示灯矩阵键盘OLED模块通用定时器软件设计:yi矩阵键盘(中断方式)前面文章有介绍定时器中断:用于更新游戏界面贪吃蛇设计:#define MAXLENGTH 100 //蛇的最大长度int map[32][12]={0};//地图大小 x,y(一个坐标为4*4个像素点) 实际按4倍尺寸放大后地图大小为128*48个像素点int score;bool eated=false;extern

2020-09-02 13:01:17 9849 232

原创 【STM32】4*4矩阵键盘扫描程序(中断方式)

上一篇杂记写了个扫描方式的键盘程序,但是最近在做一个小游戏对CPU响应速度有要求,于是再弄个简单的键盘中断检测程序吧。 总体思路:中断线为4行连接的GPIO口,先初始化矩阵的4行输出低电平4列输出高电平,当有按键按下时的上升沿触发中断;然后在相应的中断处理函数里面采取查询的方式(参考上篇)获得键值。部分程序void EXTI9_5_IRQHandler(void) //外部中断中断函数{ if(EXTI_GetITStatus(EXTI

2020-08-12 21:49:55 6280 64

原创 【STM32】4*4矩阵键盘扫描程序(扫描方式)

由于买的最小系统开发板只有一个按键感觉不大方便调试和搞其他东东,所以又在某宝买了一个4*4矩阵键盘拓展一下按键哈。能力有限,参照之前学的51单片机例程写了份简单粗暴型的按键扫描程序,如需在大项目中使用还是得用中断来处理比较好~矩阵键盘实物和原理图图中厂家给的图应该标错了序号,从左到右是S1-S4、S5-S8、S9-S12、S13-S16为一行,小伙伴们自行理会啦。 总体思路:先向矩阵的4行输出低电平,然后检测4列的输入,若为’0’的那列即该列有按键按下;接着向列输出高电平,检测行输入,若为’

2020-06-16 13:35:48 18529 74

原创 【C语言】动态内存存储

内存存储模型:根据操作对象(变量、数组等)是否已知所需的存储空间可分为静态存储分配和动态存储分配。一、静态存储分配:通常定义了一个变量后,编译器就可根据其数据类型知道该变量所需内存空间的大小,从而系统会在运行程序时为其分配确定的存储空间。二、动态存储分配:有些操作对象只有在程序运行时才能确定,此时编译器不能知道他们需要多大的内存空间;因此,在程序运行时,系统会根据用户的要求分配存储空间且由用户决定何时释放该内存空间。这个分配方式充分利用了内存空间,还可减少了由于操作对象不确定的情况下造成的浪费和给用户提

2020-06-01 14:34:19 952

原创 【C语言】变量、变量的存储区域和存储类型

变量:即在程序运行中值可变的数据;为提高程序的可读性,变量名一般由用户根据其用途自行命名,变量名由字母、数字、下划线组成,且不能以数字开头,不能与C语言的关键字重名;在程序运行时,变量占内存空间的大小由其数据类型决定。在使用前,必须声明变量,一般格式:<存储类型> <数据类型> <变量名>;局部变量:在所有函数内定义的变量(包括函数参数)都是局部变量。程序中一般都是局部变量,另外局部变量只在自己的函数内有效,即不可被其他函数使用,因此不同函数的局部变量可以重名而不

2020-05-27 12:40:55 1649

嵌入式QT的buildroot源码包

嵌入式QT的buildroot源码包

2022-06-01

stm32贪吃蛇游戏.rar

用stm32f103c8t6完成简单的贪吃蛇小游戏

2020-09-01

stm32矩阵按键程序(中断方式).rar

矩形键盘程序(中断方式)

2020-08-12

stm32矩阵按键程序.rar

键盘扫描

2020-06-16

2019年全国大学生电子设计竞赛D题简易电路特性测试仪.pdf

2019年国电D题电路特性测试仪,能力有限,未能实现发挥部分

2020-05-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除