自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

原创 ubuntu 系统安装后精简操作

1、卸载火狐浏览器:Ubuntu 16.04卸载火狐浏览器_Cat-CSDN博客_ubuntu如何卸载火狐浏览器

2022-01-15 10:01:19 1374

原创 ESP32 Linux环境搭建

由于没有接触过Linux系统导致在舒勇linux系统搭建ESP32环境时候磕磕碰碰,遇到问题根本无从下手。自己在之前别人指导下搭建完成过一次,可是后面系统崩掉之后自己又无法搭建了,如今又从新一点一滴的记录下本次搭建过程中遇到的问题。搭建linux环境网上有很多教程,这里我就不在累赘,本文章只记录按照官方搭建方法搭建过程中遇到的问题,及解决方案。搭建方法参考乐鑫官方案例:Get Started - ESP32 - — ESP-IDF Programming Guide v4.3.2 documen

2022-01-14 16:14:37 1495

原创 ubuntu 使用GIT命令异常

系统环境ubuntu 20在安装ESP32时候使用git命令下载ESP-IDF(git clone --recursive https://github.com/espressif/esp-idf.git)时候会出现无法克隆 'https://github.com/libexpat/libexpat.git' 到子模组路径 的情况。这是由于我们没有配置git工具的原因配置git工具参考:ubuntu配置git工具_简之的通向技术之路-CSDN博客_ubuntu配置git在配置完成后运行g

2022-01-12 15:37:11 901

原创 ubuntu切换国内源

1、备份原配置文件sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak2、编辑配置文件sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak用如下内容替换文件中的原内容,然后保存。(建议多添加几个源,可以选择速度快的源下载,其他源见第4点的其他源)# 中科大镜像源deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main re.

2022-01-12 10:04:54 274

原创 电容及RC积分电路

在做项目时当我们需要将PWM信号转换为直流信号给单片机采集时,我们可以使用RC积分电路。RC积分电路模型为:Vi为输入的PWM方波,经过RC积分后就能够输出完整的直流信号。入下是周期为5ms的pwm:经过RC之后的输出波形:积分 电路实质上是利用的电容两端的电压不能突变的特性将直流脉冲信号转变为稳定的直流信号(选取合适的R和C)。同理我们也可以通过rc电路将pwm转换成各种波形(三角波)本章我们只讨论选取是当时R和C将PWM 转变为直流信号。在此之前我们需要知道几..

2021-11-11 17:28:54 15297 2

原创 面试知识点总结

在最近经过一番嵌入式软件的面试发现面试官问的很多知识点都很细,很多东西在平常的工作中都是知道个大概,知道怎么解决却没有去细致的去了解原因,借此机会来补充补充这方面知识点。一、c语言部分volatile关键字:volatile中文解释为“易变的”,在使用该关键字定义变量的时候,可以告诉编译器我的这个变量是时时刻刻子变化的,不要对其进行优化,时时刻刻从内存读取最新的数据。注意:编译器优化方式:由于访问寄存器的速度比访问内存的速度快,因此编译器将变量缓存到寄存器中,在需要读取变量数据时,直接从寄存器中

2021-11-11 10:43:31 303

原创 linux 基础命令

1. 安装命令:sudo apt-get install 文件名sudo dpkg -i 文件名2. 复制文件命令cp 要复制的文件名 复制之后的文件名3. 创建文件命令touch 要创建的文件4. 创建文件夹命令mkdir 文件夹名5. 删除文件命令rm 文件名6. 删除文件夹命令rm -r 文件夹名7. 查看文件系统命令df -h8. 查看进程命令ps auxf9. 关闭相应进程kill 进程id10. 查看文件/文件夹属性..

2021-11-11 08:30:35 68

原创 QT多线程串口开发总结

QT多线程串口开发总结1、优势 使用多线程技术可以充分发挥CPU的性能,我们在主线程上面绘制UI和一些简单的工作(信号之间的传递等等)、在子线程中完成庞大数据的处理。2、串口类构建 在串口类中封装串口的一系列接口函数。串口的初始化函数、接收缓冲区数据...

2021-05-26 19:18:46 1104

原创 ubuntu20 使用root登录

第一步:以普通用户登录系统,创建root用户的密码在终端输入命令:sudo passwd root然后输入设置的密码,输入两次,这样就完成了设置root用户密码了第二步:修改文件sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf在文件末尾增加如下两行:greeter-show-manual-login=trueall-guest=false第三步:修改 /etc/pam.d/gdm-autolo...

2020-11-17 19:10:14 670

原创 项目一---------wifi模块开发

硬件篇一、布局布局按功能模块布局,先整体后局部。 根据各个功能模块之间的联系划分每个模块的位置区域。 再布局的时候,电容不能离元器件太远。先考虑只要元器件的放置,(由外壳来确定一些元器件的位置)在对其他元器件进行布局。...

2020-01-20 08:52:55 1237

原创 MDK优化变量的问题

最近在项目上遇到个问题,在特定位置给局部变量赋值的时候会导致单片机code剧增。最后查找问题根源才知道原来是编译器将变量给优化了,在变量的定义处加上关键字__IO即可解决这个问题。在我们注释掉一个函数的调用语句时(没有注释掉函数的实现)导致我们的代码量code增加了不少,按照正常逻辑来说,注释掉代码,应该是代码量code减少才对,后面经过查资料得出问题的根源:编译原理中给出了问题的原因...

2019-11-05 18:24:11 671

原创 MDK中变量被优化的问题

在最近的项目中遇到一个奇葩的问题,在debug时发现if语句里面的条件全都为真,即是if(1) 却不执行if语句的程序代码段,结果被这个问题折磨了一下午,后来经过大佬们的指点得知原来是因为编译器对变量进行了优化 所以导致了该变量的值并不是最新的,二我们在debug的时候看到的却是变量的最新的值。所以导致了我们看到的和程序所执行的步骤不一样。解决办法:在变量的定义处加上__IO关键字,_...

2019-11-01 14:10:26 2434 3

原创 stm32之Bootloader

利用bootloader代码能够实现远程代码更新。要清楚的认识bootloader,我们就要先了解stm32正常程序运行流程。在stm32中将所有的中断做成了一张中断向量表(其实就像是一张表格),由上图可知由栈顶地址向下,我们可以大致分为三个部分。1、中断向量表2、各个中断程序入口。3、main函数入口。整个单片机上电运行的流程为:上电------复位(...

2019-10-17 11:16:10 1700

原创 stm32向flash写数据时无法执行中断程序

在之前的项目中使用定时器来模拟pwm输出,当我们在向flush写入数据的时候发现输出的pwm不完整。网上查阅资料了解到,当我们在写flush的时候是不能从里面读取代码的,而我们的程序是放在flush里面的,自然我们的中断服务函数里面的代码自然也是放在flush里面的,当我们在对flush写入数据的时候,虽然此时发生了定时中断,可是我们无法从flush里面调用中断服务程序的代码,因此才导致我们输...

2019-10-17 09:14:28 3879

原创 QT多线程编程

在QT中提供了一个QThread类,一般程序是从main函数开始的二QThread是从run函数开始的执行的。要创建一个线程就需要子类化QThread并重新实现run函数。例如:#ifndef THREAD_H#define THREAD_H#include<QThread>class mythread : public QThread{ Q_OBJEC...

2019-10-17 09:03:46 374

原创 单片机显示屏多个界面编程思路

在之前的学习中对于多界面切换显示。。是非常的头疼的一件事。。感觉无从下手。在公司看了下前辈们写的多界面切换代码后才发现。。原来多界面的切换,只要理清思路也不是特别难。。在进行多界面切换时,一定要理清编程思路,也就是,有几个界面界面的切换顺序是什么。。。。在编程时。。枚举类型就派上用场了,,我们可以将每个界面用枚举中的一个元素表示例如:enum{ ...

2019-08-29 21:21:15 2485

原创 stm32f103变量运行时无故被清0处理方法

最近在做项目,遇到个非常奇怪的问题,在程序运行时,定义的变量无缘无故就被清0了,在debug的时候,发现变量的被清零的时间不确定,有时候可能是运行一遍程序就被清零了,有时候可能是两三次。可是查了很多次。程序中都没有对这个变量做清零处理。。在网上也查看了一些帖子。。有的说是可能是某个数组越界操作导致的变量被清零。。自己想了一下。。也不能排除这种可能。。。由于自己实力有限也没有真疼到底是不是真的就是数...

2019-08-29 20:56:45 4562 5

原创 c语言链表的创建插入等操作

直接上代码://单链表的建立,节点赋值,输出,插入,整表删除,指定节点位置删除#include <stdio.h>#include <stdlib.h>#define N 15 struct student{ int date; struct student *next; }; //节点结构体/******...

2019-07-29 13:08:25 1463

原创 常用排序算法合集

排序分类:插入排序,选择排序,交换排序,归并排序(不讨论)插入排序:直接插入排序,希尔排序选择排序:简单选择排序,堆排序交换类排序:冒泡排序,快速排序typedef struct { int *date; int lenth;}sqlist;一.冒泡排序算法/**************冒泡排序算法实现************/// 时间复杂度=O...

2019-04-06 11:50:55 555

原创 2018校招编程题---密码检查

牛客网链接地址:https://www.nowcoder.com/practice/f2fbd8f61c564ca0b5feaa63ab42dae5?tpId=90&&tqId=30984&rp=9&ru=/activity/oj&qru=/ta/2018test/question-ranking题目描述小明同学最近开发了一个网站,在用户注册账户的时...

2019-04-02 18:03:37 1366

原创 2018美团外卖笔试题---[编程题]数字字符

链接:https://www.nowcoder.com/questionTerminal/024c3b99edc34b84999c5830f748a841来源:牛客网在十进制表示中,任意一个正整数都可以用字符’0’-‘9’表示出来。但是当’0’-‘9’这些字符每种字符的数量有限时,可能有些正整数就无法表示出来了。比如你有两个‘1’,一个‘2’,那么你能表示出11,12,121等等,但是无法表示...

2019-04-02 15:57:05 1398

转载 ubuntu下无法使用输入法解决方案

装载:blog.sina.com.cn/s/blog_6e14a205010176sl.html

2019-03-22 08:54:08 976

原创 stm32 f103 双通道adc采集+DMA搬运+TIME3_TRGO触发启动

前面的博客我们介绍了单通道的模式,现在我们就在此基础之上来讨论下多通道的外部信号触发启动模式。一.外部触发源首先,stm32的adc启动大致分为两种一种软件触发,一种外部事件触发。我们以ADC1为例,线面我们来看看具体有哪些外部信号能触发ADC:如图我们只要是用TIM3_TRGO信号来触发adc。下面我们来介绍下TIM3_TRGO信号。TIM3_TRGO实...

2019-03-04 10:55:29 10792 2

原创 stm32f103 adc单通道+dma传输

基于stm32f103的adc采集+dma传输实验一.adc配置:设置规则序列typedef struct{uint32_t ADC_Mode; // adc模式位(具体参考不完全手册)FunctionalState ADC_ScanConvMode;...

2019-03-03 10:58:56 6349

原创 c语言多维数组与指针

一.前言:对于数组想必大家都不陌生首先得要知道的是对于数组元素在内存存储是连续性的。例如:char a[10]    //那么数组a的各个原数在内存中的存储地址为:0X01~0X10而一维数组相对于多维数组来说很简单的,然而数组a就表示的是整个数组内存段的首地址也就是0X01,那可可想而知变量a存得值就是一个地址,到此不难看出a就是一个指针。。。(不理解的可以看看我之前呢写的有关指...

2019-01-12 13:28:12 8395

转载 c语言预处理剖析

装载自:https://www.cnblogs.com/clover-toeic/p/3851102.html  

2019-01-04 14:17:43 100

原创 stm32系统时钟初始化过程剖析

STM32有以下4个时钟源: 高速外部时钟(HSE):以外部晶振作时钟源,晶振频率可取范围为4~16MHz,我们一般采用8MHz的晶振。 高速内部时钟(HSI) : 由内部RC振荡器产生,频率为8MHz,但不稳定。 低速外部时钟(LSE):以外部晶振作时钟源,主要提供给实时时钟模块,所以一般采用32.768KHz。 低速内部时钟(LSI) :由内部RC振荡器产生,也主要提供给实时时钟模块,频率大约...

2018-12-21 16:46:42 11921

原创 ucosiii常用API

代码临界区CPU_SR_ALLOC()OS_CRITICAL_ENTER()OS_CRITICAL_EXIT()延时OSTimeDly()OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_HMSM_STRICT,&amp;err)OSTimeDlyResume() 钩子函数void App_OS_IdleTaskHook (void)在空闲任务...

2018-12-06 19:14:54 456

转载 ucosiii

版权声明:本文为博主原创文章,允许转载,但希望标注转载来源。 https://blog.csdn.net/qq_38410730/article/details/80753631 UCOSIII任务调度可剥夺型任务调度任务调度就是中止当前正在运行的任务转而去执行其他...

2018-12-05 13:30:07 327

原创 nrf24l01使用与调试经验总结

最近的项目用到了NRF芯片,进过几天的奋战总算是将所有的坑都填满了。--------------------------------------------------------华丽的分割线(以下介绍NRF特性)---------------------------------------------------------------------主要特性工作在 2.4GHz ISM 频...

2018-11-14 20:46:12 34053 30

原创 spi通信协议

学单片机必须要掌握的集中串行通信协议中spi就是其中之一。下面主要是讲解下个人对于spi通信时序图以及通信协议的理解(有说错的请大指出,小弟也是刚学的有很多不懂)。下面进入正题: SPI简介SPI就是串行外围设备接口,它是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,这四根线的定义分别是: MISO:主设备数据输入,从设备数据输出; MOSI:主设备数...

2018-11-08 22:24:46 534

原创 stm32f103输入捕获

stm32的定时器具有捕获功能,能够捕获上升沿或者下降沿然后触发中断。定时器框图:细化框图:滤波器:判断在捕获到边沿信号的时候,以Fdts的频率连续采集N次该引脚上电平判断电平是否稳定。其中Fdts由控制寄存器 1(TIMx_CR1)的CKD位控制而采集频率又受到IC1F位的控制。注意:这里有两个频率,一个Fdts一个采样频率分开理解。采样频率可能受Fdts有可能受FINT...

2018-11-05 20:14:26 18956 3

原创 stm32f103与mpu6050通信详解

在做单片机与mpu6050通信之前我们得了解下mpu6050的特性和内部寄存器,而单片机和mpu6050的通信就是通过配置内部寄存器来实现的。-------------------------------------华丽的分割线(以下介绍MPU6050的基础知识)------------------------------------------------------------------...

2018-11-05 13:15:53 32270 2

原创 stm32f103pwm输出

前面介绍了定时器的基础知识以及更新中断,本次我们将一起探讨利用定时器的输出pwm。如果对定时器不了解的先观看这个帖子:https://blog.csdn.net/zj490044512/article/details/83718775本次的pwm输出是基于定时器中断来输出的。首先还是要从结构框图开始:圈出部分就是我们要探讨的部分。首先介绍下pwm输出过程:启动定时器计数--...

2018-11-04 22:07:43 6350

原创 stm32f103定时器中断

stm32为我们提供了8个定时器,分为:通用是定时器(TIM2~TIM5),高级定时器(TIM1和TIM8),基本定时器(TIM6和TIM7)。至于三者之间的区别可以参考以下博客:https://blog.csdn.net/dukai392/article/details/72058041本次我们主要讨论的是通用定时器的基本知识以及更新中断的配置过程。通用定时器框图如下:由于s...

2018-11-04 20:52:33 8733 1

原创 qt编译问题

最近做一个项目遇到个问题:qt修改源程序后运行程序得到的还是上次运行的结果,例如当我们在程序某处设置debug输出时,运行程序debug没有输出到控制台。这是由于我们的系统时间的改变导致的。当项目在之前编译过,我们改变系统时间那么我们再次编译会出现问题,可能出现无法构建程序(一直构建陷入死循环)的问题,也有可能能够构建并运行程序,可是我们运行的程序却是之前未改变系统时间时的代码,而我们修改后的...

2018-10-31 15:34:46 2720

原创 iic通信的深入理解(主从设备通信)

虽然之前也研究了先iic同行基本的时序你弄明白了,可是在机子写at24c02驱动的时候由于理解不够透彻出了点问题。 一.写数据24c02的写入数据,可以看到主从设备iic中写的过程:起始信号-&gt;器件地址(7位地址加一个读写位)-&gt;等待应答-&gt;要操作内存的地址-&gt;等待应答-&gt;写入数据-&gt;等待应答-&gt;停止时序图:代码:可是上面的...

2018-10-26 12:54:02 14573 5

原创 基于51 单片机的串口收发数据

在进行串口的收发数据过程中一定要注意波特率的问题。大多数51单片机用的都是11m晶振而只有少部分用的是奇葩的12m(楼主的就是),在12m晶振进行串口通信时切忌要将波特率设置为4800以下,应为12m晶振的波特率在9600以上误差很大容易丢失数据,动手能力强的可以折腾一下用定时器输出9600波特率。至于,串口中断以及波特率的设置可以参考网上例子忒多。在用串口助手进行串口收发数据时都会触...

2018-10-23 20:43:00 33458 35

转载 iic通信原理

1.iic总线顾名思义只有2根线:SDA数据线,SCL时钟线。主设备与各个从设备都是挂载在这两根线上如图:每个设备都有自己的一个地址,当主机要与多个外围设备中的一个设备通信时,首先要发送要通信的器件地址以确定通信目标。2.iic空闲信号,起始信号和终止信号空闲信号:SCL和SDA都为高电平期间。起始信号:SCL为高电平期间,SDA产生一个下降沿。终止信号:SCL为高电平...

2018-10-20 21:16:22 20279 2

原创 递归算法之八皇后

八皇后问题核心:1:同一行或者同一列不能放置皇后;2:斜率为1/-1的对角线上不能有两个皇后。如图:实现原理:  #include&lt;iostream&gt;#include&lt;cstdio&gt;using std::cout;using std::endl;int count = 0;int detection(int(*board)[8],...

2018-08-19 17:11:39 257

基于51单片机的简易计算器附带注释

利用8个七段数码管显示结果,4*4的矩阵输入.................................................................................................................................................................................................................................................................................................................................................

2018-05-01

空空如也

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

TA关注的人

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