- 博客(123)
- 资源 (2)
- 收藏
- 关注
原创 RTThread-Nano学习三-线程管理
将线程的状态更改为就绪状态,并放到相应优先级队列中等待调度。如果新启动的献策会给你优先级比当前线程优先级高,则立刻切换到高优先级线程。可以看到,任务1和任务2是在交替运行,各自运行设置的20tick时间片,运行后会进行任务切换。可以看到,任务1执行的时间变长为40tick了,而任务2还是20tick。如果使用动态创建的方式,需要在rtconfig.h中打开动态内存设置项。这里创建了两个线程,优先级相同,时间片相同,各自打印日志。这里创建两个线程,运行各自的内容。,创建任务时使用静态的方式,可以节省空间。
2024-10-19 16:04:56 800
原创 RTThread-Nano学习一-基于MDK移植
关于RTThread-nano的介绍,这里不做过多解释,官方文档已经介绍的非常详细了,有兴趣的可以参考如下文档
2024-10-14 19:10:22 877
原创 Windows bat脚本学习五(函数)
使用bat脚本时,经常要使用函数,而函数的传参和返回值也是非常重要的,今天就总结一下bat中函数相关的使用方法。 在Bat中,使用“:函数名”来定义一个函数。 见如下代码: 结果: 这里定义了一个名叫“end”的函数。 可以看到,虽然程序中并没有调用,但是还是执行了end函数相关的内容。这是因为bat代码是顺序执行的,就算没有调用,程序也会继续往下执行。 如果把代码改成这个样子 结果:
2024-08-30 14:12:28 1757
原创 HardFault Err,无法调试,错误定位
在平时开发的时候,经常会遇到程序报错的情况。对于来说,的方式进行定位问题。但是对于系统来时,很多MCU/SOC是的,此时,如果系统报错,我们就需要根据系统的报错信息来定位到出问题的问题点。不可在线调试,参考本文章。
2024-06-17 17:31:09 525
原创 VSCODE gcc运行多个.c文件
任务类型,有3个可选值,shell(执行shell)process(运行进程)cppbuild(C++程序编译构建)。其中前2个事VSCODE安装后即可提供的。cppbuild是安装C++扩展之后支持的。代表在什么系统上运行。
2024-05-24 16:50:37 1848
原创 C语言:__attribute__((packed)) 与 #pragma pack()
在使用结构体的时候,经常要。但是按照C语言的规则,会对不同类型的数据类型进行。有时候就会造成一些问题,如果不需要使用自动对齐的功能,就需要使用到本章的关键字。
2024-05-08 16:37:24 907
原创 蓝牙学习九(定向广播 ADV_DIRECT_IND)
广播类型有如下:可连接的非定向广播,表示当前设备。可连接的定向广播,设备。的非定向广播,仅发送广播数据,而。设备。的,设备。即可以发送广播数据,也可以响应扫描发送回应数据,但。本章主要介绍。
2024-04-03 16:11:51 2300
原创 nRF Sniffer 在Wireshark中的使用
使用nRF Sniffer在wireshark中抓包是经常使用的。但是每次抓包会获取到,数据量非常大。而对于开发人员而言,。此时就需要掌握数据的。
2024-03-21 09:49:25 1003
原创 nRF Sniffer在wireshark下的环境搭建
进入nrf_sniifer_for_bluetooth--》extcap文件,按住shirft,右键,选择打开shell窗口。运行成功后,如果此时nrf sniffer插在电脑上,就可以看到sniffer的。(2).将nrf_sniffer_for_bluetooth文件夹下的extcap的一些信息。(4).将nrf_sniffer_for_bluetooth文件夹下的。而Pyserial是安装在3.7版本下的。将下载的nrf_sniffer包解压。打开wireshark的extcap文件夹。
2024-03-20 15:55:16 1627
原创 windows下不同python版本切换
有时候在windows环境下会安装很,但是在运行一些特定环境时,又需要特定的python版本。于是就需要。
2024-03-20 15:12:25 1942
原创 C语言-数组指针与指针数组
对于使用C语言开发的人来说,指针,大家都是非常熟悉的。数组,大家也同样熟悉。但是这两个组合到一起的话,很多人就开始蒙圈了。这篇文章,就详细的介绍一下这两个概念。 指针数组和数组指针,听起来非常像,但是两者是完全不同的概念。从名字上就可以知道,一个是数组,一个是指针。 那如何区分呢? 最简单的方法,就是根据语句中符号的优先级来。 优先级关系:( ) > [ ] > *。 有了这个概念后,我们再来看如下两个定义: *a[4
2024-02-23 19:39:10 2306
原创 Base64加解密C语言版
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一。Base64就是一种基于64个可打印字符来表示二进制数据的方法。Base64包含小写字母a-z、大写字母A-Z、数字0-9、符号“+”、“/”一共64个字符的字符集。任何符号都可以转换成这个字符集中的字符,这个转换过程就叫做base64编码。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用base64编码具有不可读性,需要解码后才能阅读。
2024-01-26 18:33:37 3915
原创 海思Hi3861L开发三-新建自定义项目
上一篇文章,介绍了如何下载安装SDK,并且编译和下载。但都是基于SDK原生提供的demo。那本节我们就来介绍一下,如果。
2023-08-24 16:06:43 757
原创 海思Hi3861L开发二-SDK编译与下载
将SDK解压后,会出现如下目录:这里介绍一下SDK目录目录说明app应用层代码(其中包含demo程序,即参考实例)bootFlash bootloader代码buildSDK构建所需的库文件、链接文件、配置文件componentsSDK组件目录configSDK系统配置文件documents文档目录(包括:SDK说明文档)inclludeAPI头文件存放目录output编译时生成的目标文件与中间文件(包括:库文件、打印LOG、生成的二进制文件等)platform。
2023-08-24 11:44:12 2264 2
原创 海思Hi3861L开发一-环境搭建
之前的文章中有详细介绍了HarmonyOS的Hi3861开发,但是该开发是基于HarmonyOS来的。实际在项目开发中,可能不会用到HarmonyOS,用的还是原生的Hi3861。那这次就重新学习Hi3861L。
2023-08-23 17:20:13 1683
原创 鸿蒙Hi3861学习二十-编译构造
在使用编译构造子系统前,应了解如下基本概念: 子系统是一个逻辑概念,它由一个或多个具体的组件构成、OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、架构层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或组件。 系统最小的可复用、可配置、可剪裁的功能单元。组件具备目录独立可并行开发、可独立编译、可独立测试的特征。 Generate ninja的缩写,用于产生ninja文
2023-05-29 16:52:22 2150 1
原创 鸿蒙Hi3861问题解决-DevEco VSCode无法跳转
使用Windows和Ubuntu,在windows下搭建环境。通过远程Ubuntu系统进行代码修改与编译。在VSCode中,。按住Ctrl键,鼠标移到函数上,也不会有任何反应。
2023-05-25 16:23:44 2445
原创 鸿蒙Hi3861学习十九-DevEco Device Tool源码获取、编译、下载
1.创建工程目录架构在SDK/applications/sample/wifi-iot/app路径下新建一个hello_world文件夹。在hello_world文件夹下创建一个hello_world.c文件,并将start_up文件夹下的BUILD.gn文件拷贝到hello_world文件夹下。2.编写业务代码是OpenHarmony启动恢复模块接口,该接口用来启动业务。也可以使用SYS_RUN来实现,效果是一样的。(APP_FEATURE_INIT和SYS_RUN定义都在)文件中。
2023-05-25 15:57:17 4004 1
原创 鸿蒙Hi3861问题解决-[OHOS ERROR] clang not found, install it please
在使用进行时出现问题,导致,这里做个问题记录。
2023-05-25 10:18:05 2610
原创 鸿蒙Hi3861学习十八-DevEco Device Tool环境搭建
在之前的文章中,我们是通过的方式进行开发。今天我们同样是采用。为什么要采用这种方式呢?因为就目前而言,大部分的开发板还,如Hi3861、Hi3516系列开发板。本次的任务就是可视化界面进行相关操作,的方式对接ubuntu下的DevEco Device Tool(可以不安装Visual Studio Code),然后对ubuntu下的源码进行开发、编译、烧录等。ubuntu版本:20.04windows版本:win10。
2023-05-23 15:29:09 3196 1
原创 C语言-printf打印%*s、%.*s与%-.*s的区别
在平时的使用中,会经常使用到printf进行打印,而最长使用的方式是printf("%s",string)进行打印。但是有个问题,如果string结尾不是0。那么printf会继续打印,直到遇到0为止。这样就会有内存溢出的风险。显然,这种是不符合预期的
2023-05-22 17:34:33 5480
原创 鸿蒙Hi3861学习十七-Huawei LiteOS-M(MQTT)
初始化MQTT相关的参数和回调。n网络参数,结构体为Network} Network;my_socket:后续mqtt要使用到的描述符。mqttread:mqtt的读回调函数mqttwrite:mqtt的写回调函数无。
2023-05-22 16:26:09 1993
原创 鸿蒙Hi3861学习十六-Huawei LiteOS-M(Socket服务端)
将socket和输入参数的地址与属性进行绑定fd:套接字描述符,socket()函数返回值。addr:要绑定的属性值。包括端口IP地址等//长度//地址族(address family),也就是地址类型//16位端口号//32位IP地址//不使用,一般用0填充这里需要注意的是,bind函数的第二个参数,会将sockaddr_in类型强转为socketaddr。//长度//地址族(address family),也就是地址类型//IP地址和端口号sockaddr和的长度相同。
2023-05-18 17:53:45 1003
原创 鸿蒙Hi3861学习十五-Huawei LiteOS-M(Socket客户端)
创建一个socket描述符,用来唯一标识一个socket。后续需要通过该描述符进行读写操作。domain:IP地址类型。常用的类型有AF_INET(IPV4)、AF_INET6(IPV6)。type:数据传输方式/套接字类型。常用的类型有(流格式套接字/面向连接的套接字TCPSOCK_DGRAM(数据报套接字/无连接的套接字UDP。protocol:传输协议。默认为0,系统自动推演使用的协议。也可以手动输入,常用的协议有,
2023-05-18 14:48:07 1764
原创 鸿蒙Hi3861学习十四-Huawei LiteOS-M(AP模式)
为指定的WIFI事件注册回调函数。当WIFIEVENT中定义的WIFI事件发生时,将调用已注册的回调函数。event:相关事件,结构体为WifiEvent。:网络连接状态改变回调。与STA有关。具体含义见上一章。:扫描结果回调。与STA有关。具体含义见上一章。:热点状态改变回调,即热点创建时的回调。与AP有关。state热点状态。WIFI_HOTSPOT_ACTIVE(1)热点已创建成功。WIFI_HOTSPOT_NOT_ACTIVE(0)热点已关闭。有STA连接回调与AP有关。
2023-05-16 15:55:44 812
原创 鸿蒙Hi3861学习十三-Huawei LiteOS-M(STA模式)
为指定的WIFI事件注册回调函数。当wifiEvent中定义的wifi事件发生时,将调用已注册的回调函数。
2023-05-15 15:56:24 1772 2
原创 鸿蒙Hi3861学习十二-Huawei LiteOS-M(osXX与LOS_XX)
osXX是cmsis标准的接口,例如osThreadNew、osTimerNew、osSemaphoreNew等。因为这些函数我们在之前的文章中都有详细介绍,这里不做过多介绍,只介绍这些文件的位置,感兴趣的自行研究。
2023-05-11 15:00:19 931
原创 鸿蒙Hi3861学习十一-Huawei LiteOS-M(内存池)
创建内存池。不能在中断中调用。block_count:申请的内存块个数block_size:每个内存块的大小attr:属性。自定义内存时使用,默认为NULLNULL:失败其他值:内存池ID。
2023-05-11 09:46:02 1666
原创 鸿蒙Hi3861学习十-Huawei LiteOS-M(消息队列)
函数功能:创建队列。不能在中断中使用。msg_count:队列元素总个数msg_size:队列单个元素大小attr:属性,自定义地址时使用。默认为NULLNULL:失败其他:队列标识符char *Buf;
2023-05-09 15:23:47 1653
原创 鸿蒙Hi3861学习九-Huawei LiteOS-M(互斥锁)
创建互斥锁。不可在中断中使用。attr:属性,自定义内存时使用。默认NULL锁标识符。
2023-05-08 17:45:36 1343
STM32F103ZET6 IAP串口下载
2018-05-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人