自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IAR工程编译后,HEX文件起始地址为0x08000000的问题

IAR

2022-08-17 17:18:10 680 1

原创 Fatal Error[Pe1696]: cannot open source file “core_cm3.h“错误码(1696)

2022-08-12 15:53:16 572 2

原创 J-Link配置华大环境

j-link配置华大环境

2022-08-04 09:45:41 3331 2

原创 Beyond Compare软件的使用

1、下载安装后2、主页面-》会话-》会话设置3、在会话设置页面-》比较1)不选择时间戳比较2)选择比较内容,选择二进制比较

2022-05-11 08:40:02 260

原创 RTThread无法创建多个线程的问题--初学者

我遇到的问题在代码中创建了5个线程,但只有4个线程可以正常工作,不管是调换线程的位置,排在第5个线程都不能正常工作。说明不是线程内容的问题,是在第5个位置的线程不能正常创建。问题解决原因是在board.c中SRAM_SIZE所分配的内存太小,被前面的线程消耗完了,因此后面的线程不能创建。把SRZE_SIZE更改大一点就行了。...

2022-04-05 14:06:42 753

原创 STM32F103串口4和串口5的使用

void usart4_init(void){GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE );RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, .

2022-04-05 13:56:33 2649

原创 初学RT-Thread运行代码出现错误:main.c:32: undefined reference to `rt_thread_create‘

环境软件环境:RT-Thread Studio \ stm32代码出现问题的环境:在创建一个线程,对代码进行编译后出现错误;错误出现的原因:因为上面的线程创建需要使用内存的动态分配功能,但新工程中是没有打开的,因此无法创建动态线程。解决方法:1)双击 RT-Thread Settings 打开配置2)在内核中找到 使能动态内存3)选择Small Memory Algorithm4) Ctrl+s 保存5)在从新编译就可以了...

2022-03-31 15:46:19 1090

原创 STM32读取DHT11中时序的问题,通过逻辑分析仪读取信号

DHT11.C 代码#include "dht11.h"//DHT11初始化函数//DHT11 DATA---PB3void Dht11_Init(void){ GPIO_InitTypeDef GPIO_InitStruct; //开B组时钟和AFIO时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB ,ENABLE); //初始化IO口 //定义结构体变量 GPIO_InitStruct.GPIO_Pin = GP

2022-03-31 14:36:49 5102

原创 当把串口初始化时,程序卡死的问题

1、屏蔽串口初始化的时候,程序正常2、当初始化串口程序的时候,程序出现卡死3、问题的原因: 没有定义串口中断函数定义串口中断后,程序正常

2022-03-28 11:04:05 971 1

原创 RT-Thread 串口的使用

简单测试串口打印主函数前定义#define SAMPLE_UART_NAME "uart2" /* 串 口 设 备 名 称 */static rt_device_t serial; /* 串 口 设 备 句 柄 */char str[] = "hello RT-Thread!\r\n"; /* 要发送的数据 */主函数内struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; /* 配 置 默 认 参 数 *//* 查 找

2022-03-24 15:21:34 1261

原创 RT-Thread 标准版代码移植到STM32

1、创建三个文件夹1、libraries 放置驱动文件2、rtthread rt源码3、user 工程文件2、打开标准版源码3、移植rt源码移植到4、移植源码中的STM32的驱动5、移植user工程文件移植到6、更改路径文件打开移植后的工程中user目录下的 Kconfig 文件和 SConstruct 文件。如下Kconfig:把default的路径更改为指向RTTHREAD源码的文件夹路径,我的rtthread放的就是rtthread的源码如

2022-03-23 14:35:05 3827

转载 (转)移植RT-Thread Nano到STM32F103--拷贝移植方式

1、准备一个STM32例程代码以正点原子官方led例程为例2、准备RT-Thread Nano的源码下载地址:RT-Thread Nano源码3、拷贝rt-thread文件夹到STM32工程目录中拷贝到4、删除用不到的文件5、修改工程目录1、打开STM32工程2、在USER中添加\rt-thread \ bsp路径中的board.c文件、rtconfig.h文件3、Groups中选择新建rtt/source目录,在\rt-thread\ src路径中添加所有*.c文件4

2022-03-23 10:58:49 532

原创 STM32delay延时函数不准确,无法读取DHT11数据的问题

STM32delay延时函数不准确,无法读取DHT11数据的问题环境:KEIL5 、STM32F103C8T6 、 淘宝提供的例程功能需求:stm32f103单片机读取dht11的温湿度数据问题发生:在把商家提供的驱动包移植的我的工程中后,只有DHT11传感器无法正常工作,其他传感器能正常工作,初步分析是DHT11的驱动代码有问题。因为DHT11对微秒的延时要求比较高。问题查找:1、经过debug的调试,发现代码在if(DHT11_DATA_IN() == Bit_RESET)这里判断后,条件不

2022-03-22 10:37:14 8152 7

原创 ONENET中MQTT代码二次开发注意事项,f103c8t6+onenet

运行环境:wid10、keil5、stm32f103c8t6代码框架:onenet官方例程注意:onenet官方采用的芯片为stm32f103ret6,而本次芯片环境为stm32f103c8t6,两者是不同的,自行百度。芯片不同,要更改的地方:1、硬件配置文件——》 .s 文件startup_stm32f10x_hd.s为高性能芯片,而stm32f103c8t6为中等性能芯片,所以要采用 startup_stm32f10x_md.s 文件。删除startup_stm32f10x_hd.s文

2022-03-10 14:45:51 291

原创 QT串口发送十六进制给单片机格式问题

读取接收到的数据void MainWidget::Read_Data(){ QByteArray buf; buf = serial->readAll();//串口数据接收 if(!buf.isEmpty())//判断接收数据是否为空 { int32_t hexData = buf.toInt();//把接受数据转换为int类型 cksj = hexData;//把数据赋值给要用的变量cksj(自己定义的)////////////

2022-03-09 16:45:56 1524

原创 STM32F1串口配置步骤

步骤如下所示:步骤一:使能串口时钟及GPIO端口时钟步骤二:GPIO端口模式设置,设置串口对应的引脚为复用功能步骤三:初始化串口参数,包含波特率、字长、奇偶校验等参数步骤四:使能串口步骤五:设置串口中断类型并使能步骤六:设置串口中断优先级,使能串口中断通道步骤七:编写串口中断服务函数...

2022-02-15 15:58:08 6453

原创 linux开发板上电自动运行程序

若需要每次开机都生效配置则修改/etc/profile配置文件以shd.sh文件为例 vi /etc/profile 键盘浏览到末尾添加 cd /dev/snd ./snd.sh

2022-02-10 18:21:37 842

原创 QT项目创建新工程(.cpp/.h/.ui)

1.点击文件,点击右键,选择(新建文件或项目)2.在项目栏中选择(Application),中间栏中选择(Qt Widgets Application),然后选择确定(Choose…)3.输入项目名称,选择下一步4.点击下一步5.选择项目类的类型,点击下一步6.下一步7.选择符合系统的选项,点击下一步8.完成...

2022-01-19 15:57:51 1786 1

原创 QT项目添加新页面(.cpp/.h/.ui)

1.选择工程文件2.点击右键,选择Add New…3.选择QT,选择Qt设计师界面类,选择Choose…4.选择需要就界面类,选择下一步5.输入新建工程的名称,选择下一步6.选择完成新添的文件的完成了

2022-01-19 10:59:48 4867

原创 科大讯飞demo报错:10407

官方解析:运行时:问题解决我这里是so文件的问题,解决方法:进入到 Linux_iat(下载的那个文件)/libs/x64 下(如果计算机是64位选“x64”,如果是32位选”x86“)sudo cp libmsc.so /usr/local/lib/sudo ldconfig一定在复制完so文件后,执行sudo ldconfig。执行完,再次运行例行程序,测试成功。...

2022-01-12 11:56:18 952

原创 memcpy()函数与strcpy()函数

memcpy(内存拷贝函数)memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;#include <string.h>void* memcpy(void* destination, const void* source, size_t num);void* dest 目标内存 const void* src 源内存 size_t num 字节个数return:函数返回一个指向dest的指针。void *mymemcpy(void

2021-08-29 21:11:43 455

原创 网络编程3——广播与组播

广播与组播1、广播在前面讲的例子里,不管是TCP协议还是UDP协议,都是”单播”, 就是”点对点”的进行通信,如果要对网络里面的所有主机进行通信,实现”点对多”的通信,实现广播通信。1) 广播发送不是循环给网络中的每一个IP发送数据,而是给网络中一个特定的IP发送信息,这个IP就是广播地址。2) 只要给广播地址发送数据,那么就会把数据转发到网络中的每一个地址。3) 广播数据发送只能采用UDP协议==> 广播地址: 一个网络中最大的那个IP就是广播地址。==> 主机IP : 192

2021-08-07 11:47:09 1343

原创 网络编程阶段项目——实现一个网络聊天室功能

项目说明:运行程序,获取好友列表。客户端可以选择发送单播,组播,广播信息。显示当前聊天室在线成员。发送单播,输入好友IP,发送单播数据;发送组播,输入组播数据,进行发送;发送广播,输入广播数据,进行发送。==》 拓展,实现发送文件功能。(TCP协议)==> 要求: 程序运行流畅,无明显bug.提示:好友列表如何获取,如何更新?==> 程序上线时,给所有的在线用户发送广播数据 ==> “ON_LINE!”,每一个已经在运行的终端对接收到的广播进行判断,如果是特定的数据”O

2021-08-02 11:17:18 968

原创 网络编程TCP/UDP—2

一、相关函数1、inet_ntop() //网络字节序IP转字符串SYNOPSIS #include <arpa/inet.h> const char *inet_ntop(int af, const void *src,char *dst, socklen_t size);==> af : 地址族 AF_INET==> src : 需要转换的网络字节序的IP变量的地址==> dst : 转换之后的IP存放的位置==> size : 第三个参

2021-07-29 23:23:48 180 1

原创 网络编程TCP—1

网络编程一、进程间通信方式1、信号 kill -信号值 pid / killall -信号值 进程名 / killall signal()2、无名管道 – 不存在与文件系统,只能作用于亲缘进程。3、有名管道 – 是Linux系统中的一种特殊文件(管道文件),可以实现同一主机内任意两个进程之间的通信。写入具有原子性。可以实现多对一通信。4、消息队列 – 消息带有类型的一种”管道”5、共享内存 – 进程间通信最快的一种方式,6、信号量 – 结合共享内存使用二、网

2021-07-29 11:45:50 268

原创 GEC6818开发板上音乐播放器

1,播放音乐需要的资源(1)音乐文件 (.mp3, .wav … )(2)Linux下音乐解码器 (madplay:开发板上默认移植好了,可以直接用)2,madplay播放器使用(1)登录到开发板系统(2)查看madplay播放器的位置 --> which madplay : /usr/bin/madplay(3)使用madplay播放音乐(自己准备音乐文件 xx.mp3)==> 将mp3文件烧写到开发板==> U盘拷贝文件到当前路径A,把需要拷贝的音乐文件放在

2021-07-29 09:02:11 14421 11

转载 系统编程第七节——线程池

1、什么是线程池?线程池是一种使用多线程与线程同步互斥机制的一种组织结构,这种结构在处理大批量同类型任务时是一种比较高效的处理方式。线程池本质时一个结构体,管理一批线程和线程需要执行的任务。面向对象编程中,对象创建和销毁是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是对一些很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解

2021-07-29 08:45:36 125

原创 系统编程第六节——线程的同步互斥

一、线程的互斥临界资源:系统中多个任务都可以访问的资源。在多线程编程中,必须要注意对临界资源的保护。问题:假设在一个办公室内,有一台打印机,这个打印机所有人都可以共享使用,但是在某一个人使用时,希望在这一段时间内只能被自己使用(互斥),如何实现这个功能?解决方案:不管是谁使用打印机,在使用之前给打印机上锁,用完之后,解锁。1、线程互斥锁线程互斥锁解决的问题就是临界资源的独占式使用,当进程中的线程给某一个资源上锁之后,其他的线程想要使用这个资源的时候,必须等待原来的线程解锁之后才能使用这个资源。

2021-07-28 23:36:20 236

原创 系统编程第五节——线程

一、线程的概念1、进程进程就是正在系统中运行的程序。程序被运行时,会被系统从硬盘加载到内存中,进程会在内存中形成一个独立的内存体,这个内存体有自己的堆,栈,数据段,代码段等资源。进程的上级挂靠操作系统。进程是系统中资源分配的最小单位!2、线程线程是比进程更小的单位,在操作系统中不能独立存在,线程必须要存在于进程中。一个进程里面至少有一条线程(主线程),线程是系统中任务调度的最小单位,简单来说,线程就是用来干活的。线程是系统中任务调度的最小单位!操作系统: 一家公司进程:公司里面的部门线程

2021-07-28 19:12:56 315

转载 孤儿进程、僵尸进程、守护进程

基本概念我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。孤儿进程一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。孤儿进程并不会有什么危害

2021-07-28 11:50:54 180

原创 系统编程第四节——共享内存与信号量

系统编程 – 共享内存一、共享内存的简介共享内存与消息队列一样,都是IPC对象,所以在使用时必须要先获取key值。共享内存是进程间通信数据传输效率最高的一种通信方式。二、共享内存原理在Linux系统下,程序被加载到内存成为进程时,系统会给这个进程分配它执行所需要的内存空间,但是对于软件应用层的进程来说,是不允许直接操作物理内存的,只能操作”虚拟内存”,虚拟内存与物理内存之间存在MMU(内存管理单元),实现虚拟内存与物理内存之间的映射关系。三、共享内存的缺陷共享内存的机制是直接从物理内存中申请

2021-07-27 12:47:35 1337 1

原创 系统编程第三节——信号

进程间通信 — 信号1,Linux下的信号信号机制是Linux系统内核管理任务的一种重要机制,信号传递的信息有限,所以都是表达一些特定意义,大部分的信号的默认功能都是让目标进程退出,暂停(SIGSTOP),继续(SIGCONT)。1)Linux下的信号可以通过命令 kill -l 查看一共是 62个信号。前面的31个信号, 1~311、这些信号被称为非实时信号,也叫作不可靠信号2、信号不会排队,但是会嵌套,如果有新的信号到达,但是原来的信号没有及时响应,前面的信号会被丢弃掉。3、每一个

2021-07-21 19:55:12 256

原创 系统编程第二节——管道

Linux进程间通信1、进程间通信的类型管道(pipe)和命名管道(FIFO)信号(signal)共享内存消息队列信号量套接字2、管道  管道是Linux中最常用的进程间通信 IPC 机制。使用管道时,一个进程的输出可以成为另外一个进程的输入。  当输入/输出的数据量特别大时,管道的这种 IPC 机制就非常有用。  在Linux中,通过将两个file结构指向同一个临时的VFS节点,这个VFS节点又指向同一个物理页而实现管道

2021-07-20 23:15:57 173

转载 exec函数族实例解析

exec函数族实例解析fork()函数通过系统调用创建一个与原来进程(父进程)几乎完全相同的进程(子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间。linux将复制父进程的地址空间内容给子进程,因此,子进程有了独立的地址空间。),也就是这两个进程做完全相同的事。在fork后的子进程中使用exec函数族,可以装入和运行其它程序(子进程替换原有进程,和父进程做不同的事)。fork创建一个新的进程就产生了一个新

2021-07-18 21:33:07 204

原创 系统编程第一节——进程

1、什么是进程?进程就是正在内存中运行的程序。==>在 windows 下的进程信息 ==> ctrl + alt + delete ==> “任务管理器”==》比如:hello.c (源文件) ==》通过 gcc 编译后生成 ==》hello(可执行程序)==》运行 ./hello 程序后,就变成了进程2、Linux下的进程==》ps (查询进程信息)==》ps -aux (静态显示所有的进程信息)==》top (动态显示系统中的进程信息)

2021-07-18 21:29:06 1412

3.kyLin-V3.2-OneNET-裸机-进阶例程.zip

本程序移植移动onenet官方驱动程序,实现上传数据到设备,并显示。主要修改了发送数据函数,使得数据易于发送和理解。

2020-01-15

空空如也

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

TA关注的人

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