自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (6)
  • 收藏
  • 关注

原创 调试正在运行的程序(Keil)

大家好,我是惊觉。接上一篇调试正在运行的程序(STM32CubeIDE),今天Keil的实现方法。调试正在运行的程序,属于附着调试,在启动调试器时不会重置单片机的运行状态,从而可以定位死机等问题。没看过上一篇的同学,建议先回去看一下。这次随便找了个keil工程进行演示,程序每秒打印一行信息,在5秒后卡死。输出结果:[0] hello[1] hello[2] hello[3] hello[4] hello[5] hello修改配置项直接进入正题:修改Debug配置。笔者还是使用JLin

2023-08-03 19:05:48 478

原创 解决Vim(YouCompleteMe)奇怪的跳转问题

解决Vim(YouCompleteMe)奇怪的跳转问题。

2023-07-23 01:19:07 345

原创 WSL GUI程序的方向键失灵

本文介绍如何处理WSL GUI程序方向键失灵的问题。

2022-01-29 23:22:25 1196 1

原创 notion菜单栏消失了

不知从何时起,notion的菜单栏消失了,如下图:菜单栏里面有一个打开新窗口的菜单很实用,可实现多开。当然啦,也可以直接使用Ctrl+Shift+N。不过如果记不得这快捷键的话,如何调出菜单栏呢?其实很简单:按一下Alt...

2021-10-20 11:00:49 2231

原创 【国产MCU移植】移植RT-Thread到国产芯片HC32L196

序移植原理rt-thread源码结构目录说明bsp板级支持包。存放各种硬件平台的驱动代码,初始化代码,工程文件。components组件。如finsh控制台,抽象层驱动,文件系统,网络系统。examples示例程序include内核以及libc的头文件libcpu与CPU架构相关的接口,为操作系统调度提供支持。src内核代码,如线程、定时器、线程间通信(互斥锁,信号量)。https://www.rt-thread.org/docume

2021-09-12 23:55:45 5157 3

原创 调试正在运行的程序(STM32CubeIDE)

大家好,我是惊觉,今天给大家分享一个调试小窍门:调试正在运行的程序。阅读本文之前,你需要掌握相应IDE的在线调试器的使用方法,包括:设置断点单步运行(步入,步过,步出)比如,STM32CubeIDE的调试界面如下:黑色框:调试系列按钮红色框:函数调用栈黄色框:代码区蓝色框:变量查看区绿色框:内存查看区当遇到问题时...

2021-08-11 09:38:57 5616 1

原创 sscanf之模式匹配

接上一篇文章,笔者给大家介绍一个更加简单的解析工具,那就是sscanf。热身大家在上C语言课,做C语言课程设计或实验时,应该经常接触printf和scanf,前者打印字符中到标准输出,而后者从标准输入读取并解析字符串。sscanf和scanf类似,只不过它并不从标准输入读取,而是直接解析用户传入的字符串。int sscanf(const char *str, const char *format, ...);str 待解析的字符串format 格式化参数… 变长参数,为一系列用于存放解析结

2021-08-01 11:40:55 1205

原创 strtok拆分字符串

大家好,我是惊觉,今天聊聊字符串。字符串的使用场景非常之多,人机交互和双机通信都会用到。比如:通过串口向单片机发送指令,以执行操作或配置参数。单片机读取传感器数据,数据格式是字符串。一般GPS数据就是字符格式。有些场景需要使用多个处理器协同工作,比如单片机+openmv,它们之间需要通信,可以采用字符格式的编码方式。操作字符串,无非是两件事儿:生成字符串与解析字符串,后者往往更复杂一些。Java,Python之类的高级编程语言自带了强大的字符串处理库,提供非常丰富的操作。下图是Java的Stri

2021-07-31 18:12:21 542

原创 嵌入式基础--日志模块

请看如下的日志接口:void logPrintf(char *buf , unsigned int len);该接口实现的功能是将字符串输出到某串口以提供调试信息。该接口就很不方便使用。既然是打印字符串,就不需要指定长度,因为字符串以’\0’结尾,完全可以在logPrintf之中计算字符串的长度。在每次调用logPrintf时传入字符串长度,即是一件很麻烦的事情。下面多次出现的strlen(temp)就是重复代码。sprintf(temp , ">> Calibration:%d\r\

2021-07-25 21:56:59 2081 5

原创 你真的了解头文件吗

哪儿出错了calc.h#ifndef __CALC_H__#define __CALC_H__int calc_add(int a, int b){ return a + b;}#endifuser1.c#include "calc.h"void user1_test_add(void){ int a = 1; int b = 2; int sum = calc_add(a, b); LOG_I("%d + %d = %d", a, b,

2021-07-20 18:02:33 328

原创 张三和李四谁跑的快

mark

2021-07-08 17:57:16 415 1

原创 嵌入式基础--毫秒级定时模块

大家好,我是惊觉。失踪了三个月,我回来了。给大家带来一个好消息和一个坏消息。坏消息是,我尚未满血复活,Ardupilot第四篇将继续延期。好消息是,公众号恢复更新,先出一系列提升编码能力的文章。全国电赛在即,昨天母校老师联系我,想让我给学弟们做下赛前培训。我做过很多年的培训,很早就发现了一个问题:同学们在为比赛做准备时,往往只注重去学习使用各种各样的传感器,自动控制算法,各种驱动。同学们只关注如何去实现功能,而忽视了如何把代码写得更好,更健壮,更易扩展和维护。如果在比赛之前,先准备好高质量的代码框架,基础

2021-07-05 21:04:15 420 2

原创 Ardupilot移植经验分享(3)

接Ardupilot移植经验分享(2)深入细节是时候深入具体的HAL接口了。笔者并不打算一一讲解所有的接口,而是挑选一些有代表性的来分析,主要的内容是:分析HAL接口的含义,包括功能,入参及返回值的具体含义。分析HAL_PX4的实现,看看有没有可借鉴之处。调度接口AP_HAL::Scheduler提供了程序调度相关的接口。主要分为两类:延时函数注册回调延时函数有3个,1个毫秒级延时,2个微秒级延时。这里的延时可不是死等,而是睡眠一段时间,在此期间让出CPU的使用权以执行其他的线程。

2021-04-07 23:46:41 857 5

原创 Ardupilot移植经验分享(2)

目录明确目标把握脉络hal引用main函数在哪儿初始化步骤深入细节线程接口微秒级延时串口驱动Example很有用Ardupilot移植经验分享(1)简要介绍了移植Ardupilot的思路,重点讲述了下载编译源码的要点和搭建源码阅读环境的方法。下载编译源码,一方面是为了搭建源码阅读环境,另一方面是当阅读源码遇到疑问时,可以稍作修改后进行调试验证。搭建便捷高效的源码阅读环境,更是非常重要。若是选择的源码阅读器不能进行函数跳转,不能查看函数调用栈,不能快速导航到目标函数或变量,阅读70万行ardupilot代码

2021-04-06 21:48:09 1080 9

原创 RT-Thread Studio烧写国产mcu(swm320)固件的方法

背景最近STM32的价格飞涨,

2021-04-03 18:35:43 2052 3

原创 寻找ardupilot的main函数

这几天在写“Ardupilot移植经验分享–阅读源码”。其中有一小节名为“main函数在哪儿”,笔者在叙述时想借此机会演示eclipse的实战效果。为了控制文章的篇幅,笔者决定拎出来单独说明。ardupilot源码,指的是下图中的蓝色部分,具体将在“Ardupilot移植经验分享–阅读源码”中说明。阅读ardupilot源码的第一步是了解程序的整体框架,把握其脉络。而第一步中最重要的,莫过于找到程序的入口。通常,一个C工程的入口是main函数,那么ardupilot程序的main函数在哪儿呢?我们先

2021-03-17 12:49:52 765

原创 加速下载ardupilot工程

本文是从“Ardupilot移植经验分享(1)-下载太慢或者失败”中拆分出来,因为内容较多。请注意,本文是“Ardupilot移植经验分享(1)”中拆分出来,需要先通读“Ardupilot移植经验分享(1)”。本文中有时会提到“前面的步骤”、“之前”,这指的都是“Ardupilot移植经验分享(1)”中说过的内容。在国内访问github的速度是受到限制的,下载大型工程时,容易失败。有加速通道的同学,就不必看了。ardupilot是一个大型且复杂的工程,这使下载问题更加严重。为什么这么说呢,因为ardup

2021-03-10 22:11:31 942 4

原创 Ardupilot移植经验分享(1)

背景两年前接了个小项目,使用TI公司的单片机做飞控。这是学校的实验项目,主要是演示、推广之类的用途,要求不高。接触Ardupilot数年矣,一直想搞点大动作,正好借着这次机会,来一次真正的移植。硬件平台为TM4C1294XL LaunchPad,软件平台为RT-Thread操作系统,基于Copter-3.5.7版本进行移植。为什么写这篇文章在10年前,四轴飞行器还是个冷门的东西,玩的人并不多,而接触过飞控开发的人就更少了。2013年全国大学生电子设计竞赛首次引入飞控类的赛题,越来越多的学生接触了飞

2021-03-06 00:06:56 4018 5

原创 定时任务的溢出问题

引子先看一段代码:static void led_loop(void){ static uint32_t next_tick = 0; if(HAL_GetTick() >= next_tick) { next_tick = HAL_GetTick() + 100; HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); }}int main(void){ // 此处省略一万字

2020-11-27 11:16:18 4114 7

原创 rtthread套娃移植

和大家分享下将基于rtthread的项目移植到其他平台的经验。背景最近做了一个物联网项目移植。原先的项目使用的硬件平台为stm32f401+sim800c(mcu + 2G modem),软件平台为rtthread 4.0.1。移植到的新平台为BC25(nb modem),软件平台为BC25 opencpu sdk,也跑了个RTOS,具体不详。BC25不支持rtthread,笔者也无法移植rtthread到BC25,因为BC25只提供了一套SDK接口,无源码,无芯片手册。opencpu简介可能有些

2020-10-13 17:32:09 2112 6

原创 奇怪的warning: “__have_long64“ is not defined

奇怪的warning: “__have_long64” is not defined引子最近在使用一款nb模块的opencpu来做项目,遇到了个奇怪的问题。可能有的同学没接触过opencpu,待我简单介绍下。opencpu是用来替代传统cpu的。传统的物联网项目,用的是单片机+通信模块。而通信模块里面也是有处理器的,并且其资源(cpu算力,ram和flash)往往富余。既然如此,就有厂家把通信模块的cpu资源开放出来,给用户跑业务程序。这样省去了两个cpu的通信,也省去了单片机的成本,省力又省钱。我

2020-09-03 18:10:43 410 1

原创 “控件设置ContextMenuStrip属性后,第一次右击不显示菜单”解决方法

“控件设置ContextMenuStrip属性后,第一次右击不显示菜单”解决方法今天写一小软件的时候,遇到如标题所述问题,具体如下:这软件有个“选项”对话框,我在主界面中的“选项”菜单Click事件中创建并显示该对话框,代码如下:private void ToolStripMenuItem_Options_Click(object sender, EventArgs e){

2014-01-20 17:02:23 6550 1

Unix Network Programming Volume 1, The Sockets Networking

UNIX® Network Programming Volume 1, Third Edition: The Sockets Networking, 原文原版,我给其添加了详细的书签:章 -- 节 -- 带粗体标题片段

2017-01-17

Iptables Tutorial 1.2.2 英文原版带书签

Iptables Tutorial 1.2.2 PDF,英文原版带书签,详细的讲述了iptable的原理、使用技巧,还补充了必要的tip/ip协议知识以便于理解。

2017-01-17

批量文件转码工具

此工具用于批量转换文本文件(后缀名不限)的编码方式,如从UTF-8转为GBK。其特点如下: 1.源编码和目标编码,可以自由选择:UTF-8、GB2312、Unicode等等 2.可批量选择源文件,可拖拽文件夹 3.可配置过滤规则,用于在批量选择时过滤文件类型 4.可识别BOM头从而自动识别文件类型,可配置对于目标编码为UTF系列时添加BOM头。 5.压缩包中有详细的使用说明文档。

2014-10-30

Java Swing示例

这个示例并不是Swing的完整演示,演示了一些常规组件的使用方法,也演示了一些组件的巧妙运用(YY一下,哈哈),如JTextArea的取消重做,用JLayeredPane实现动态的悬浮框,JTextPane演示等等。 我上传的是NetBean的工程,如果你使用的不是NetBean,直接提取src目录中的代码即可。不过我是用包的机制的,注意一下

2011-06-27

基于UDP的Java大数据传输

UDP传输的优点是快捷,因为它是没有安全保证的。有一定的丢失率。而且,由于各包的传输路径不同,后发送的包可能先于先发送的包到达。所以,如果发送大量的数据,就需要进行检错。当然,还得保证快捷的传输。 我就是针对这一需要,设计了大数据传输的类。 详细说明见文件中的"说明.txt"

2011-05-10

Java本地方法教程

这篇文档中详细阐述了Java本地方法的使用

2011-03-08

空空如也

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

TA关注的人

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