自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

清寻

分享嵌入式相关学习经验,教程,以及资料。欢迎与我交流!

  • 博客(48)
  • 资源 (8)
  • 收藏
  • 关注

原创 QT学习之如何使用QThread(继承QThread)

概述​ 通常在程序中需要同时做好几件事情,这时不可避免的会涉及到多线程的学习,QT学习过程中亦是如此,而QT中提供了 QThread,因为涉及到信号与槽,线程的使用也有些变化。在QThread的文档中有两种使用方法。一. 继承 QThread 类在第二种方式中,直接继承QThread 类,并且重新实现 run 函数,且只有run 函数就运行在新的线程中。所以常见的做法如下:继承 QThread 类;重新实现 run 函数,要在其中实现无限循环或者事件循环,线程才不会退出;代码片段如下

2021-03-23 00:40:10 1763

原创 QT学习之如何使用Qthread(moveToThread方法)

概述​ 通常在程序中需要同时做好几件事情,这时不可避免的会涉及到多线程的学习,QT学习过程中亦是如此,而QT中提供了 QThread,因为涉及到信号与槽,线程的使用也有些变化。在QThread的文档中有两种使用方法。文章目录概述一.`QObject::moveToThread()`的使用一.QObject::moveToThread()的使用​ 这个是第一种方式,直接调用 QObject::moveToThread() 函数,将继承自 QObject 的对象移到线程里面。此时该对象的 槽函数运行在另

2021-03-21 18:02:14 1849 1

原创 QT学习之如何自定义信号和槽

概述​ 现实生活中有一种场景:在跑步比赛的时候,当发令枪打响的时候,运动员就会开始跑,有可能别的程序会做个队列,运动员一直读队列里的信号,而相对QT来说,就提供了强大的信号与槽机制(也是QT的核心功能之一),来轻松完成这个功能。文章目录概述一.什么是信号与槽机制?二.如何自定义信号与槽三.验证一.什么是信号与槽机制?​ 信号和槽(Signal & Slot)用于两个对象(object)进行交流,通俗地来说,就是一个对象发出什么信号(类比现实生活中可以是,发出声音,手势),另一个对象执行相应的

2021-02-21 11:30:43 5112 4

原创 QT学习之如何读写配置文件(QSettings)

概述​ 有时候,我们需要根据本地的配置文件,去配置我们的程序,在其他语言中,可能需要自己去写读写文件的逻辑,而在QT中,就直接提供了QSettings类,简化了我们的操作!文章目录概述平台一.配置文件长什么样子?二.如何读写配置文件1.头文件包含2. 配置文件不存在就创建3. 读配置文件4. 写配置文件3.测试结果平台ubuntuQT5.9一.配置文件长什么样子?图中带[] 以下为一个group以键值对的形式存储,等号左边是key,右边是value​二.如何

2021-02-18 13:17:24 1776 1

原创 用 STM32 通用定时器做微秒延时函数(STM32CubeMX版本)

概述​ 在使用 DHT11 的时候,时序通信需要微秒来操作,STM32CubeMX 自带一个系统时钟,但是实现的是毫秒级别的。因此就自己用通用计时器实现一个。文章目录概述1.配置定时器时钟2.计数器时钟频率及计数模式预分频系数计数器模式自动重装载值3.打开定时器中断4.具体实现代码5.代码测试环境:开发板:STM32F4探索者(正点原子)1.配置定时器时钟选择时钟源这里选择的是内部时钟,来自 RCC 的TIMxCLK,在通用定时器框图中我们可以看到如下:而我们可以在 STM3

2020-12-01 22:16:37 6511 4

原创 C语言基本数据类型(C99)

C语言基本数据类型(C99)先行知识点补码 = 原码的反码 + 1基本数据类型介绍基本数据类型计算机内存占用大小(字节)取值范围( signed ) char1[ -128 ,+127 ]unsigned char1[ 0 , 255 ]short2[-32768~+32767]unsigned short2[ 0 , 65535]int4[ -2147483648,+2147483647]unsigned int4[

2020-10-11 20:29:47 1320

原创 什么是STM32CubeMX?(STM32代码生成器)

一、STM32CubeMX 介绍STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,通过自己对硬件的需要,进行选择,而后可以快速生成代码,减少开发人员的开发难度,时间和花销。STM32 覆盖整个STM32系列。在我看来有如下优点:大量的芯片(资源,价格介绍),方便对我们进行芯片选型除了拥有芯片本身的外设选择外,还拥有一系列的中间件,如 RTOS, USB, TCP/IP等对芯片的整体资源,以及时钟树有更深刻的认识快速代码生成(对外设进行初

2020-07-15 23:02:25 2684

原创 STM32CubeMX之串口不定长数据接收(接收中断+空闲中断)

概述​ 上一篇讲了用串口中断的方式接收数据,但是它有两个缺点只能定长接收数据如果数据超出,那么产生溢出中断,那时发送的数据将不再接收所以接下来就会用 IDLE 中断来解决这个问题文章目录概述一. 空闲(IDLE)中断1. 空闲帧二. 空闲中断相关的宏三. 空闲中断使用实例环境:开发板:STM32F4探索者(正点原子)一. 空闲(IDLE)中断1. 空闲帧​ 什么是空闲帧?在 STM32的中文参考手册 中,你会发现如下解释:​ 空闲帧可理解为整个帧周期内电平均为“1

2020-07-08 01:07:17 3611 2

原创 STM32CubeMX之串口使用(中断方式)

概述上一篇 说了 STM32CubeMX之串口的使用 (阻塞模式) ,这一章来说说串口中断模式收发数据。文章目录概述一. 在STM32CubeMX 图形化中开启串口中断二. 串口中断相关函数介绍三. 串口中断函数使用实例四. HAL库中的串口相关源码介绍环境:开发板:STM32F4探索者(正点原子)一. 在STM32CubeMX 图形化中开启串口中断在 前一篇 STM32CubeMX之串口的使用 (阻塞模式) 的文章的基础上,打开串口中断,如下图所示:然后就可以生成工程了二. 串口中

2020-07-07 00:40:56 8286 3

原创 STM32CubeMX之串口重定向(printf 的使用)

概述​ 我们在初学 C 语言的时候,第一句打印就是 printf("hello world") ,后面也经常用来调试打印信息,但是我们在单片机开发的时候 printf 就用不了,因为 printf 会打印在命令行窗口上,但是单片机上肯定没有,所以我们通过改写函数,将 printf 重定向到串口之上,然后通过串口调试助手来显示。文章目录概述一. 改写函数二. printf 使用实例一. 改写函数新建一个头文件 debug_com.h#ifndef __DEBUG_COM_H#define __DE

2020-07-01 23:03:24 4452 2

原创 STM32CubeMX之串口封装详解

概述​ 上一篇写了 STM32CubeMX 的串口的使用,而这篇来扒一扒,它是怎么进行封装的。其实在标准库中也类似如下过程。文章目录概述一.串口实例二. 串口实例初始化三. 串口数据的发送(阻塞模式)四. 串口数据接收一.串口实例​ 我们都知道,其实单片机最后其实都是对 串口相关的寄存器 进行操作,那么我们想扒一扒它的流程,必然要先知道串口相关的寄存器是哪些,因此查阅 STM32F4xx中文参考手册 ,我们可以在 第711页 找到以下相关寄存器:状态寄存器数据寄存器波特率寄存器

2020-07-01 01:36:22 3078 4

原创 STM32CubeMX之串口的使用 (阻塞模式)

环境:开发板:STM32F4探索者(正点原子)一. 进行项目的必要配置时钟配置调试配置如果不大清楚,可以看 STM32CubMX工程创建(点亮LED)二. 串口选择​ 查看 STM32F4探索者 开发板的原理图,如下图所示,我们可以看到USB转串口是在USART1因此我们在 STM32CubeMX 中如下图进行勾选,并进行配置序号一,代表串口处于异步模式序号二,关闭串口的硬件流控的功能序号三,波特率设置,一般是根据通信的芯片进行选择,这里选择是115200 bps序号

2020-06-28 23:38:02 3114 3

原创 ESP8266使用教程之网络知识简讲(TCP/IP)

总述我们使用 ESP8266 模块,就是为传输数据到互联网上。而 ESP8266 有内置的 TCP/IP 协议栈,可以方便我们进行数据交换。那么 TCP/IP 协议栈是什么?一.计算机网络体系架构​ TCP/IP 协议栈 是指能够在多个不同网络间实现信息传输的协议族。​ 说 TCP/IP 协议栈,那么就不得不提 OSI 参考模型,它是国际标准化组织(ISO)1997年提出的开放系统互联(O...

2020-04-10 00:38:16 3389 6

原创 ESP8266使用教程之初识

一.ESP8266介绍​ 这里将会使用正点原子的 ATK-ESP8266 为例,来说明 ESP8266 的使用。​ 该模块上面板载了安可信的公司的 ESP8266 模块,ATK-ESP8266 采用串口与MCU通信,内置 TCP/IP 协议栈,实现串口与 WiFi 之间的装换。​ 通过正点原子的 ATK-ESP8266,传统的串口设备只需要通过串口配置,就可以通过网络传输自己的数据。二.引...

2020-04-07 23:23:05 1814

原创 ASCII码,字符,字符串三者之间的关系

ASCII码,字符,字符串三者之间的关系ASCII码是什么?​ ASCII 全称为 ( American Standard Code for Information Interchange),简单的说,就是用 7 位二进制去编码我们生活中常见的数字,大小写字母,标点符号以及一些特殊的控制字符,如下:数字:0 , 1 , 2 , 3 … 9字母:a , b , c …z , A , B ,...

2020-02-18 11:03:46 14953

原创 STM32CubeMx(STM32F4 +FreeRTOS+CMSIS-RTOS)之资源(线程,队列,内存池)管理

由于可能创建很多个线程,线程互相通信,因此,我们将线程ID统一存储在一个结构体中,进行管理。资源管理结构体如下:typedef struct resource{ uint8_t initialized; uint8_t id; osThreadId led_thread; uint8_t led_init...

2019-10-30 01:33:47 1617

原创 STM32CubeMx(STM32F4 +FreeRTOS+CMSIS-RTOS)之队列(queue)创建

一.CMISIS-RTOS中queue相关API概览模块 宏定义 描述 消息队列定义 osMessageQDef 定义一个消息队列 osMessageQ 访问一个消息队列定义 模块 API 描述 消息队列管理: 定义,创建,发送和接收数据 osMessageCreate 创建一个消息队列...

2019-10-29 01:46:22 3063 1

原创 STM32CubeMx(STM32F4 +FreeRTOS+CMSIS-RTOS)之测试串口线程(并添加 printf 重定向)

一.添加printf重定向FreeRTOS其实有自己的printf函数,这里先不管它,直接用普通的重定向方法在usart.c的文件中,添加下列代码,且该文件需要包含#include "stdio.h"#ifdef __GNUC__#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#else#define PUTCHAR_PRO...

2019-10-29 00:09:01 1677

原创 STM32CubeMx(STM32F4 +FreeRTOS+CMSIS-RTOS)之线程(thread)创建

一.CMISIS-RTOS中thread相关API概览 模块 宏定义 描述 线程定义 osThreadDef 定义一个线程 osThread 访问一个线程定义 模块 API 描述 线程管理: 定义,创建和控制线程 osThreadCreate 开始执行一个线程 osThreadTer...

2019-10-28 01:58:11 2277

原创 CMSIS-RTOS学习目录

开始在STM32F407开发板进行freeRTOS的学习,由于在STMCuMx下生成的代码,进行了CMSIS-RTOS封装,所以有下列的学习。 学习目录: ...

2019-10-27 23:37:54 342

原创 FreeRTOS 之五种内存分配方案(概括总结)

一.FreeRTOS 之五种内存分配方案Heap_1: (1).在此方案中,实现了基础版本的pcPortMalloc ,而没有实现vPortFree(),因此它适用于从来不会删除任务的应用 ( 2) 动态分配的内存总是确定的 ,不会产生内存碎片 Heap_2: 该方案不同于方案1,它...

2019-10-25 02:17:03 2410

原创 STM32CubMx(STM32F4 +FreeRTOS+CMSIS-RTOS)之 FreeRTOS工程创建

一.在STM32CubMX中添加FREERTOS系统1.外部时钟配置(也可配内部时钟) 该开发板为STM32F4探索者,查看原理图可知,其外部时钟为8MHz所以时钟树配置如下: 此时主时钟已达到最大。2.添加在线调试功能(适用于Jlink,stlink) ...

2019-10-22 02:30:35 1302 2

原创 STM32F4之什么是SPI?

一.什么是SPI? 1.SPI是一般为4线的总线协议,有时也可以是三条线(单向传输) 2. 四线分别为MISO(主设备数据输入) ,MOSI(主设备数据输出),SCK(时钟),CS(片选) 有必要了解一下它的英文全称(1) MISO - Master input SlaveOutput(主设备数据输入,从设备数据输出)(2)MOSI - Master Out...

2019-09-06 20:27:12 1423 1

原创 Error:Error: Style Resource definition cycle: TextAppearance.AppCompat.Light.SearchResult.Title => T

错误提示为:Error:Error: Style Resource definition cycle: TextAppearance.AppCompat.Light.SearchResult.Title => TextAppearance.AppCompat.SearchResult.Title => TextAppearance.AppCompat.SearchResult.Titl...

2019-05-24 10:04:20 360

原创 从STM32F4的库函数分析如何实现点亮一个LED(点亮LED)(三)

使用库函数点亮LED,不用我们自己去查看寄存器,方便我们的开发,但是库函数是怎样封装的呢?int main(void){ //声明一个结构体变量 GPIO_InitTypeDef GPIO_InitStructure; //使能GPIO外设时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); //定义一个结构...

2019-04-18 20:58:21 2623

原创 从STM32F4的库函数分析如何实现点亮一个LED(代码启动)(二)

这部分的启动代码,主要是将堆栈进行初始化,中断向量表以及中断函数进行定义。 这里将启动文件拆分出来进行理解。Stack_Size EQU 0x00000400 AREA STACK, NOINIT, READWRITE, ALIGN=3Stack_Mem SPACE Stack_Size__initial_sp...

2019-04-11 13:06:34 1143 1

原创 从STM32F4的库函数分析如何实现点亮一个LED(代码存放位置)(一)

一.STM32F407的组成STM32F407由一个Cortex-M4内核,片上flash,片上sram,以及片上外设(uart,I2C,SPI等)组成。 内核通过I,S,D三条数据总线,与总线矩阵相连,对片上flash,片上sram,以及片上外设等进行操作,内核通过I总线获取指令,内核...

2019-04-10 22:45:31 1638 1

原创 stm32F4之用示波器解码I2C协议

当我们调试I2C的时候,有时候我们并不清楚,I2C协议有没有正常工作,借助示波器,我们可以很直观的看到通过I2C协议发出数据。所以掌握示波器对I2C进行解码也是很重要的,这里我使用的是 SIGLENT 公司的示波器,型号为 SDS 1202X,支持I2C,SPI解码等。一.用示波器解码I2C的相关代码主函数代码int main(void){ u8 read;...

2019-04-09 20:06:13 1998 1

原创 stm32F4之使用I2C读写24C02

一.24C02简单介绍 1.串行E2PROM是基于I2C-BUS 的存储器件, 2.可以支持100万次擦除,数据可以保存100年, 3.支持每次读写1字节 4.写周期最大5ms(即最好保证在5ms后进行读写,否则可以数据将会读取错误)二.24C02的读写时序...

2019-04-04 17:27:51 2654

原创 使用STM32CubeMX建STM32F4工程(让LED闪烁)

一.选择器件首先,先开始一个工程:选择自己所使用的芯片,即可以如下一个个选,也可以直接搜索。二.选择所要使用的硬件资源直接左键点击图中的GPIO,就可以选择GPIO的模式,然后更进一步就是通过System Core 下GPIO选项中,其他的选项进行配置然后选择芯片时钟:(此时选择的时钟为外部时钟)三.配置时钟在第二步,选择完时钟之后,就可以对时钟进行配置,这...

2019-04-04 10:35:31 2499

原创 什么是STM32CubeMX?(STM32代码生成器)

一、STM32CubeMX 介绍 STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,通过自己对硬件的需要,进行选择,而后可以快速生成代码,用于快速的开发与验证想法。在我看来有如下优点: 1.大量的芯片(资源,价格介绍),方便对我们进行芯片选型 2.快速代码生成(对外设进行初始化),方便我们对我们的想法进行验证与开发...

2019-04-04 10:33:00 2686

原创 STM32F4之模拟I2C通信协议的实现

一,何为IIC?I2C(IIC,Inter-Integrated Circuit),两线式串行总线,由PHILIPS公司开发用于连接微控制器及其外围设备。它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上。IIC是半双工通信方式。二,IIC通信的6种状态1.空闲状态2....

2019-04-02 21:37:56 3775 4

原创 STM32F4之PWM设计

一,何为PWM?PWM的全称为:Pulse Width Modulation,简称脉宽调制百度来的:脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。而简单的来说就是,我们可以使用处理器输出自己想要的占空比的矩形波,去达到控制模拟电路等目的。二,STM32中拥有PWM在STM32F407的芯片手册中有描述:12个16位的定时器,2个32位的定时器,每...

2019-03-30 17:00:56 6806

原创 STM32F4之USART串口通信

资源:STM32F407有2个UART(通用异步收发器),4个USART(通用异步/同步收发器)在STM32F407ZET6的手册上有描述,这些接口所对应的引脚如下:在这里我们选用串口1进行简单编程:实现功能吐下:1.每秒发送一个数字2.进行数据回传其所要配置的内容如下:1.GPIO的时钟使能2.声明一个GPIO结构体变量,进行定义并进行初始化,主要...

2019-03-21 17:17:30 11874 2

原创 STM32F407之如何选择外设时钟的函数

在STM32F4xx的中文参考手册中的第二章节中就可看到:哪些外设挂载在哪些总线上,就可以在rcc.h的头文件中找到对应的外设时钟使能函数。在STM32F407的芯片手册中有详细的框图...

2019-03-21 17:17:17 1240

原创 STM32F4之定时器

STM32F407有14个定时器,其中有12个16位的定时器,2个32位的定时器这几种定时器的区别定时器的溢出时间计算:Tout(溢出时间)=(ARR+1)(PSC+1)/TclkARR:自动重装载寄存器,用于装载计数器PSC:PSC预分频器(分频范围1~65535)Tclk:外设时钟周期,可以在STM32F407的芯片手册中找到时钟框图(备注:ARR是代表计...

2019-03-21 17:17:00 4995 1

原创 STM32F4之GPIO的使用

上次学STM32F103是在大二的暑假,学了一段时间之后也没有项目做,渐渐地就转向其他的方向,最近实习要用到STM32F407,就打算从头学,但是一些基础还在,并决定将学习的过程记录一下,以备使用。一.STM32F407ZGT6的GPIO资源介绍STM32F407ZGT6 - 一共有7组IO口 - 每组IO口有16个IO - 一共16X7=112个IO...

2019-03-21 17:16:33 3437 2

原创 插入排序

插入排序: void insert_sort(int array[],int len){ int i,j,key; for(i=1;i<len;i++)//把第一个数,当作一个有序数组 { key=array[i]; for(j=i-1;j>=0 && key<array[j];j--)//序号比0大...

2018-11-12 11:06:36 126

原创 选择排序

 选择排序:void selection_sort(int array[],int len){ int i,j ; for(i=0;i<len-1;i++) { int min=i; //假设取得第i个值为最小值 for(j=i+1;j<len;j++)//从假设的最小值到最后一个一个比较 ...

2018-11-10 22:41:25 101

原创 冒泡排序

 实现简单的冒泡排序:void bubble_sort(int array[],int len){ int i,j; for(i=0;i<len-1;i++)//总共要几趟比较 { for(j=0;j<len-1-i;j++)//每趟几次比较 { if(array[j]>array[j...

2018-11-09 09:25:17 110

QSettings.rar

QT学习之如何读写配置文件

2021-02-18

test_usart_interrupt_idle.zip

上一篇讲了用串口中断的方式接收数据,但是它有两个缺点 1. 只能定长接收数据 2. 如果数据超出,那么产生溢出中断,那时发送的数据将不再接收 所以接下来就会用 IDLE 中断来解决这个问题

2020-07-08

test_usart_interrupt.zip

STM32CubeMX之串口使用(中断方式),STM32CubeMX之串口的使用 (阻塞模式),这一章来说说串口中断模式收发数据

2020-07-07

test_usart.zip

STM32CubeMX之串口的使用 (阻塞模式)文章,里面的所使用的详细代码,如果有问题,请私信我

2020-06-30

2.2 test_usart_thread.zip

将usart串口,进行printf(暂不考虑性能)的重定向,方便调试

2019-10-30

2.manage_resource.zip

将创建的多线程进行管理,方便线程之间的通信等操作。

2019-10-30

thread_create.zip

基于STMCubMx(STM32F4探索者)生成带有FreeRTOS的工程,修改默认线程,并且实现Led闪烁

2019-10-30

F4_TRI.zip

STMCubMx+FreeRTOS工程中 添加了usart测试线程,并实现了串口重定向

2019-10-29

空空如也

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

TA关注的人

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