自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ART-Pi在rt-thread studio中使用touchgfx与触摸屏GT1151的适配

首先感谢大佬手把手操作,我们做下来,不出意外的话编译没有错误,我们也需要根据大佬的文章进行操作,但是有一个问题就是ART-Pi中Touchgfx默认的是GT9147触摸屏,如果使用其它的触摸屏就需要在中适配,由于时间原因长话短说,完成大佬的操作后,可以看到显示屏上显示demo但是并不能进行触摸操作,我们需要在这个文件中适配修改,比方说我使用的GT1151,先把GT1151的示例在工程中注释掉,然后根据GT1151的示例进行修改。直接上代码:使用其它的触摸屏应该也是一样的方法。/** ******

2021-12-28 09:11:48 882

原创 ART-PI wifi模块自动连接

1、首先我们要创建一个ART-PI wifi例程,因为这个例程是已经部署好的,我们可以根据它的工程来调试我们的工程2、要在成功打开wifi的基础上进行添加,在我们自己的工程上添加wifi模块,打开wifiAP6212和使能AP62123、然后我们添加fal 和 easyflash软件包4、添加完之后如果编译的话应该会报错,请移步这里看具体解决方法5、将我们创建的模板工程中port文件中的4个文件添加到我们自己工程中port文件中6、最后在我们的main文件中不同位置分别添加extern

2021-07-21 09:37:23 990 1

原创 RT-Thread 添加EasyFlash后编译遇见错误的问题

问题:当我们添加EasyFlash轻量级嵌入式闪存库编译后遇到许多错误问题现象:问题原因:ef-fal_port.c未参与编译问题解决:将ef_fal_port.c复制到src文件夹下,刷新工程重新编译就好

2021-07-14 21:16:02 739 1

原创 RT-Thread Finish命令踩坑(PWM例程遇到)

问题:刚开始Finish命令还可以使用,但是当执行命令列表中的命令后发现按Tab键Finish命令不出现,这个问题是在运行PWM例程中遇到的。问题原因:原因其实很简单:命令列表中有while循环进入了死循环,但是为什么有的时候可以呢?比如线程管理中的一个例程这是因为它使用了线程调度...

2021-07-14 10:42:28 1007

原创 基于ART-PI添加文件系统

首先感谢大佬的文章下面是我借鉴并学习的内容我们创建好一个例程,然后打开配置保存并下载输入list_device,成功打开轻量级嵌入式内存库打开文件夹将ef_fal_port.c复制到src文件夹中然后编译成功...

2021-07-13 21:14:09 192

原创 基于ART-PI ALIENTEK 4342 RGBLCD的touchgfx在rt-studio上的使用

创建模板工程添加gt9147芯片触摸包,使能IIC1,并打开Touchgfx library并保存使能CRC 和 DMA2D因为touchgfx需要C++支持,所以配置C++编译规则自带的ALIENTEK 4384 RGBLCD,因为我使用的是4342,所以需要配置一下参数同时touchgfx文件需要同步配置这个时候我们下载上发现屏幕模糊,这是因为时钟不匹配这个时候我们我们在touchgfx中添加例程,下载上发现触摸不能使用或者说触摸点不对校准触摸编译下

2021-07-13 09:49:32 511

原创 RT-Thread硬件定时器未进入中断问题解决

问题现象:问题原因:造成这个的原因主要是未使能硬件定时器时钟问题解决:我使用的是TIM13随便找地方添加代码使能时钟就可以void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base){ if(htim_base->Instance==TIM13) { /* USER CODE BEGIN TIM2_MspInit 0 */ /* USER CODE END TIM2_MspInit 0 */

2021-07-11 10:25:15 1062

原创 在CUbecell的平台下测量光照强度(BH1750)

其实用的是BH1715,但是和BH1750驱动是一样的在这里遇到了一个就是比较坑的问题吧,就是DVI引脚需要拉高话不多说上代码(参考其他博主的,然后自己又修改了一下)#include <Wire.h> //IIC库#include <math.h> int BH1750address = 0x23;//芯片地址为16位23byte buff[2];void setup(){ Wire.begin(); Serial.begin(115200);

2021-05-08 10:26:26 420

原创 在Cubecell的平台下利用SHT10测量温湿度

废话不多说直接上代码#include "Arduino.h"#define dataPin SDA#define clockPin SCLint _dataPin;int _clockPin;void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val){ uint8_t i; for (i = 0; i < 8; i++) { if (bitOrder == LSB

2021-05-06 19:57:55 249

原创 Cubecell 实验四、LoRa发送与接收的实验原理及实现

打开LoRaSender的方法LoRaSender代码解析打开LoRaReceiver的方法LoRaReceiver代码解析实验1:“通过一个LoRa节点向另一个LoRa节点发送“Hello World!”,并观察发送的串口和接收的串口注释:这个实验可以两个人一起做,如果一个人有两个板子也可以自己做;发送文件:发送界面:接收界面:拓展1:“通过一个LoRa节点向另一个LoRa节点发送“Hello World!”,并观察发送的串口和接收的串口!发现了问题请百度解决!实现方

2021-03-29 09:57:02 1624

原创 Cubecell 实验三、LoRa参数配置及使用实验

实验三、LoRa参数配置及使用实验Arduino常用函数参考https://wiki.arduino.cn/?file=home-%E9%A6%96%E9%A1%B5打开的方法AT_Command代码解析如何进行函数查询:但是缺点是基本的函数有,但是比较复杂一些的函数就没有了。LoRa WAN参数配置注意:频段等参数需在”工具“中修改1、通过修改源代码参数相关参数在相应的.ino文件中修改:也就是这些你需要什么,修改什么。然后再次编译下载。2、通过AT指令修改为了使用A

2021-03-29 09:31:06 1095 2

原创 Cubecell 实验二、驱动移植及设备地址查询实验

实验二、驱动移植及设备地址查询实验驱动移植在进行这一个实验的时候请确认USB驱动程序,GIT和Arduino IDE是否已正确安装汉化:1、安装CubeCell相关框架(1)通过Arduino board manager1、打开Arduino IDE , 然后依次点击文件->首选项->输入以下json url到board manager URLs::https://resource.heltec.cn/download/package_CubeCell_index.jso

2021-03-29 09:15:08 593 3

原创 Cubecell实验一、开发环境及SPI协议

实验一、开发环境及SPI协议认知实验开发环境1、简介在这里我们使用的是 “CubeCell系列”,是一个较好的LoRaWAN节点应用的选择、以下是一些关键特征与Arduino开发环境完全兼容;基于超低功耗设计,即使在RTC时钟运行的情况下,在深度睡眠模式下也能达到3.5μA;LoRa信号输出功率范围0~22(±1)dBm;尽管具有当前最先进的技术,但价格低廉;通过使用集成加密算法来使克隆的固件不起作用以保护您的投资;基于成熟的技术 – 新的ASR650x,是将PSoC4000和SX126

2021-03-29 09:05:31 1255 1

原创 5、释放指针

利用二级指针释放一级指针正确案例#include <stdio.h>#include <stdlib.h>#include <string.h>void P_Free(char **myp){ if(myp == NULL) { return ; } free(*myp); *myp = NULL;}int main(){ char *p = NULL; p = (char *)malloc(10

2021-03-13 09:08:15 458

原创 4、递归字符串的反转

1、通过递归的方式逆序打印2、递归和全局变量(把逆序的结果存入全局变量)3、递归和非全局变量(递归指针做函数参数)全局变量#include <stdio.h>#include <string.h>char g_buf[20];void inverse(char *p){ if(p == NULL) { return ; } if(*p == '\0') { return ; } inverse

2021-03-12 20:36:53 182

原创 CubuCell系列学习笔记

LORAWAN OTTA模式OTAA(Over-The-Air Activation),是LoRaWAN的一种空中入网方式。当node在上电的时候处于非入网状态时,需要先入网才能和服务器进行通信。其操作就是node发送join_request message,请求入网,然后服务器同意入网,并且返回Join-accept message,node再对信息进行解析,获取通信参数,之后就可以和服务器通信了。LORAWAN ABP模式ABP方式是事先将入网信息烧写在设备上,也就是说设备上

2021-03-11 10:21:06 367

原创 4、在STM32F103的基础上使用ATK-LORA-01

经过几天的努力和划水,终于在STM32F103的基础上使用ATK-LORA-01上的大部分功能,下一步就是进行LORA定位了,不过感觉还有一些自己觉得不完美的地方就是不能使用中断去选择AT模式还是通信模式,具体说就是通过按键中断,在AT模式和通信模式之间切换,遇到的技术难题是,在进入中断之后,运行中断完毕之后还会进入原来运行的地方,也就是说如果主程序在While循环中运行,中断之后,还是会进入while循环,除非在中断中找到条件使while循环跳出,但是在scanf函数重定义中有while循环,有那么一点点

2021-03-10 20:45:44 2247 8

原创 1、STM32L151+LoRa开发板笔记

1、支持 LoRaWAN 协议2、可接插锂电池、板载 USB 转串口1、介绍LoRa_Kit_151 的射频部分是基于 Semtech SX127x 芯片的模块,主控芯片采用 STM32L151CBU6。是一款低功耗、高性价比的LoRaWAN 方案评估板。1.2、产品特性板载 CP2102 USB 转串口芯片(被连到 151 的 USART1),方便调试和烧写程序(驱动程序);2 个 LED 指示灯:橙色:电源指示(闪烁 – 通电; 长明 – 充电; 熄灭 – 充电完成),白色:连接到 PB8

2021-03-08 20:57:13 2580 1

原创 3、使用串口通信踩坑(Ascll和Hex)

1、Ascll和Hex这个刚开始接触一直在迷,Ascll和Hex的区别是什么,其实很简单,在串口中我们不勾选这个就是Ascll发送了。当然如果要问Ascll发送的原理,这个也简单就是对照Ascll值表就好了,举个例子:你用Ascll的方式发送1234,那么按照Ascll值发送的就是字符‘1’ ‘2’ ‘3’ ‘4’也就分别是Ascll值0x31,0x32,0x33, 0x34(16进位制),发送 abc 则是字符‘a’,‘b’,‘c’,也就分别是Ascll值0x41 0x42 0x43;

2021-03-06 18:38:01 12112

原创 3、栈的属性

栈的方向#include <stdio.h>int a;int b;char buf[128]; //静态联邦的时候buff所代表的内存空间的标号,就已经定义下来了printf("&a:%d &b:%d",&a,&b);1、一般情况下,栈的开口方向是向下的。目的:避免了栈的溢出。2、不管栈开口的方向向下还是向上buff的方向永远是是向上的。3、栈的生长方向和buf的内存增长方向是两个不同的概念函数调用模型1、main函数中可以在栈

2021-03-06 12:41:41 254

原创 2、变量的本质,内存四区

变量的本质内存的别名。#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ int a; a = 10; printf("&a :%d\n",&a);//6422044 *((int *)6422044) = 100; printf("a :%d\n",a);//6422044}运行结果结果内存四区栈区:程序局部变量区。堆区:Ma

2021-03-04 21:17:12 143 1

原创 2、星光STM32F03串口通信调试

串口通信调试main.c#include "main.h"char data[100] ;//数据缓冲流,用来存储数据int main(){ System_Init(); //系统初始化 SysTick_Init(NULL); //必须有否则会出问题 LED_Init(); //LED灯初始化,用来观察实验现象 USART1_Init(); //串口1初始化 while(1) { scanf("%s",data); //输入

2021-03-04 14:25:54 328 1

原创 1、数据类型提高

数据的本质:固定大小内存块的别名#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ int a;//告诉编码器分配4各字节的内存 int b[10];//告诉c编译器分配40内存字节 printf("b:%d, b+1:%d, &b:%d, &b+1:%d\n",b,b+1,&b,&b+1); //b+1 &

2021-03-03 21:56:08 85 2

原创 1、ATK-LORA-01

前言:这一篇文章是自己根据ATK-LORA-01无线串口模块用户手册,感觉对自己比较重要的进行摘抄学习。ATK-LORA-011、ATK-LORA-01正面图和背面图2、各引脚详细描述3、模块连接图模块与MCU/ARM设备电气连接:注意(1)无线串口模块为 TTL 电平(高电平>2.4V,低电平<0.4V),请与 TTL 电平的 MCU 进行连接。(2)模块的引脚电平是 3.3V,与 5V 的单片机通信需要做电平转换适配。(3)MD0、AUX 引脚悬空下为低电平。4

2021-03-03 19:38:53 6834 4

原创 STM32F103VE串口printf 和 scanf 函数重定向

printf函数重定向1.首先很的重要一点,一定要打开SysTick定时器,否则连跑马灯都跑不通;printf函数重定向这个很简单没什么特殊要求我们只需要在usart.h文件中加上#include “stdio.h”在usart.c文件中加上int fputc(int ch, FILE *f){ while((USART1_SR&UART_LSR_THRE)==0); SEND_BUF1 = (u8) ch; **加粗样式** return ch;}在这里我们只

2020-12-03 20:43:43 1177

原创 二级指针及多级指针的学习

用二级指针输出模型#include<stdio.h>#include<stdlib.h>#include <string.h>#include <ctype.h>//求文件中两段话的长度int getMen(char **myp1,int *mylen1,char **myp2,int *mylen2){ char *tmp1 = NULL; char *tmp2 = NULL; tmp1 = (char *)malloc

2020-11-08 14:55:23 155

原创 一级字符串容易出错笔记及const修饰符学习

1#include<stdio.h>#include<stdlib.h>#include <string.h>#include <ctype.h>int main(){ char buff[1024] = {0}; //不是buff[0] = 0;而是定义为buff[0] - buff[1024] ='\0'; printf("%c\n",buff[0]); char *p = {0}; //不是*p = ‘0’; //而是等于

2020-11-07 17:04:46 151

原创 定义一个接口,实现根据key获取valude练习

#include<stdio.h>#include<stdlib.h>#include <string.h>#include <ctype.h>/*键值对""key = valude”)字符串,在开发中经常使用;要求1:请自己定义一个接口,实现根据key获取yalude;40分要求2:编写测试用例。30分s要求3:键值对中间可能有n多空格,请去除空格30分注意:键值对字符串格式可能如下"key1 = valued1""key2 =

2020-11-07 16:40:06 335

原创 字符串的反转

字符串初始化//1 指定长度char buff[100] = {‘a’,‘b’,‘c’,‘d’};//相当于字符串末尾有‘\0’,且‘\0’后面都会变成零//1.2char buff[2] = {‘a’,‘b’,‘c’,‘d’};//如果初始化的个数大于内存的个数,编译错误。//2.不指定长度char buff[] = {‘a’,‘b’,‘c’,‘d’};//buff是一个数组,不是一个以0结尾的字符串。字符串反转1.1#include<stdio.h>#include

2020-11-04 07:38:56 111

原创 c++ 类和对象(一)

重点知识调用拷贝构造函数的3种情况普通的构造函数是在对象创建时被调用,而拷贝构造函数在一下三种情况都会被调用:(1) 当用类的一个对象去初始化该类的另一个对象时,如:Rectangle p2(p1);//用对象p1初始化对象p2,拷贝构造函数被调用(代入法);Rectangle p3=p1;//用对象p1初始化对象p3,拷贝构造函数被调用(赋值法)(2) 当函数的形参是类的对象,调用函数进行形参和实参结合时。例如:fun1(Rectangle p)//形参是类Rectangle的对象{

2020-06-26 16:37:10 545

原创 c++基础

用动态分配空间的方法计算Fibonacci数列的前20项并储存到动态分布空间代码#include <iostream>using namespace std; int main() { int *p; p=new int[20]; p[0]=1; p[1]=1; for(int i=2;i<20;i++) { p[i]=p[i-1]+p[i-2]; } for(int i=0;i

2020-06-26 09:00:41 238

原创 STM32F103 DHT11温湿度采集实验

实验目的本章学习温湿度传感器DHT11的使用,利用DHT11采集环境的温湿度,DHT11和DS18B20一样,也是单线通信。实验简介DHT11数字温湿度传感器是一种含有已校准数字信号传输的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术。确保产品具有很高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接,DHT11与单片机之间能采用简单的单总线进行通信,仅需要一个I/O口,传感器内部温度和温度数据40Bit的数据一次性传给单片机,

2020-06-15 21:09:54 9627 2

原创 STM32F103 DS18B20温度采集实验

实验目的学习DS18B20温度传感器的使用,利用其采集温度,掌握单总线通信原理。实验简介单总线简介One-Wire 总线是DALLAS公司研制开发的一种协议,它是由一个总线主节点,一个或多个从节点组成系统,通过一根信号线对从芯片进行数据的读取。每一个符合 One-Wire协议的从芯片都有一个唯一的地址,包括48位的序列号,8位的家族代码和8位的CRC代码。主芯片对各个从芯片的寻址依据这64位的不同来进行。One-Wire总线利用一根线实现双向通信。因此其协议对时序的要求较严格,如应答等时序都有明确的

2020-06-15 19:09:20 5726 5

原创 STM32F103 (内存传输)实验

实验目的本章学习STM32的DMA传输的使用,实现不同内存地址间的数据传输,数据手册请参看第10章实验简介DMA,全称为:Direct Memory Access ,即直接存储器访问。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程。通过硬件为RAM与I/O设备开辟一条直接传送数据的通道,,能使CPU的效率大为提高,从而使得CPU在DMA数据传输的过程中,可以进行数据运算,响应中断等。在硬件系统中,主要由CPU(内核),外设,内存(SRAM),总线等结构组成,数据

2020-06-12 21:20:53 1056

原创 STM32F103 EEPROM_24C02实验

实验目的本实验向大家介绍如何使用STM32的IIC硬件接口,实现和24C02之间的双向通信,通过本实验的学习,我们将对IIC通信的过程会有一个详细的了解。实验简介IIC简介IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及外围设备。它是由数据线SDA和时钟线SCL构成的串行总线,可用于发送和接收数据。在CPU与被控IC之间,IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上,但是目前大多数IIC设备不支持

2020-06-11 19:30:44 4326 2

原创 STM32F103 外部FLASH实验(SPI)

实验目的本实验学习STM32的SPI接口的使用,利用SPI接口读写16M字节FLASH芯片W25Q128FVSSIG,将结果通过串口显示出来。SPI接口请参看数据手册第23章实验简介SPI协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。SPI接口包含4条总线,分别是SCK,M

2020-06-11 12:42:20 9594 3

原创 STM32F103 DAC实验

实验目的通过本实验学习STM32的DAC数模转换器的使用,利用DAC输出电压,再用ADC采集,通过串口打印出来,数据手册请参看第12章。实验简介DAC数模转换器的作用就是将数字输入转换成模拟信号输出,比如音频播放就是通过DAC 将数字信号转换成模拟信号实现的。STM32的DAC模块是12位数字输入,电压输出的数字/模拟转换器。DAC可以配置为8位或12位模式,也可以与DMA控制器配合使用。DAC工作在12位模式时,数据可以设置成左对齐或右对齐。DAC模块有2个输出通道,每个通道都有单独的转换器。在双

2020-06-09 21:08:50 5774

原创 STM32F103 内部温度传感器实验

实验目的STM32内部集成了一个温度传感器,可以用来测量芯片的温度,本章学习如何读取此温度值,数据手册请参看第11章。实验简介STM32的内部温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压换成数字。温度传感器模拟输入推荐采样时间是17.1us。STM32的内部温度传感器支持的范围为-40~125度。精度比较差,为±1.5度左右。STM32内部温度传感器的使用很简单,只要设置一下内部ADC,并激活其内部通道就差不多了。读温度为使用传感器:1.选择ADC1_IN16输入

2020-06-09 15:33:32 13139 3

原创 STM32F103 ADC实验

实验目的当我们看到ADC的时候是不是想起来躲在辅助后面输出的ADC,但是此ADC非彼ADC。那么我们来看看32的ADC吧。STM32集成有ADC模数转换器,本章学习利用其采集电压,通过串口打印出来,数据手册请参看第11章。实验简介...

2020-06-08 15:54:23 2812

原创 STM32F103 唯一身份ID实验

实验目的STM32的每一个芯片都有一个电子签名,唯一的身份识别ID。本章我们学习获取STM32的电子签名信息,数据手册请参看第28章。实验简介电子签名存放字闪存存储器模块的系统存储区域,可以通过JTAG/SWD或者CPU读取。它所包含的芯片识别信息在出厂时编写,用户固件或者外部设备可以读取电子签名,用以自动匹配不同配置的SRM32F10xxx微控制器。本实验,我们获取STM32的FLASH容量信息和唯一身份识别ID(96位)。实验现象D5 D6...

2020-06-08 13:54:45 3293 1

小车地点保存以及导航到目的地

111

2023-12-08

car-model-test

car-model-test

2023-10-25

default.rviz

default.rviz

2023-10-24

ros-car1111111111111111

ros-car1111111111111111

2023-10-24

【正点原子】4.3寸RGBLCD电容触摸屏模块

【正点原子】4.3寸RGBLCD电容触摸屏模块

2021-07-13

空空如也

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

TA关注的人

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