自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

blog_xu的博客

Communicate with each other and make progress together

  • 博客(25)
  • 资源 (3)
  • 收藏
  • 关注

原创 See In The Dark之RAW图片读取-rawpy

See In The Dark之RAW图片读取-rawpy

2022-08-16 16:41:06 1496

原创 51单片机过渡到STM32的区别

前言:单片机入门之51,开发之STM3251单片机 51单片机是对所有兼容intel8031指令系统的8bit单片机统称,这一系列单片机始祖是Intel的8031单片机,代表型号有ATMEL公司的AT89系类(AT89C51) 软件上按位操作,从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位。不但能对片内某些特殊寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算 支持乘法和除法指令 缺点: AD、EEPROM等功能需要扩展

2022-04-15 17:04:57 690

原创 STM32之HardFault的诊断

前言:出现这种错误都是由于非法操作导致,找到异常代码并解决掉,即可修改这类问题问题追踪步骤进入JTAG仿真状态,并触发异常,串口打印如下信息,程序停止在rt_hw_hard_fault_exception中 找出关键值是pc:0x0800833a,在MDK的command窗口输入pc=0x0800833a回车,就会指向异常函数入口地址 出现HardFault的原因有如下几种 指针访问非法地址 指针非对齐访问(默认4字节对齐,你访问*(0x08003001)就会报错) 除零异常 如

2022-04-13 17:26:15 1741

原创 STM32之HAL库的Bootloader跳转到APP

前言:需要用到OTA固件升级,必须借助Bootloader搬运新固件到旧固件的Flash区,从而完成程序升级制作Bootloader程序 使用cubeMX工具,新建Bootloader工程,其中需要打开时钟,打开UART1进行调试信息输出 1.1、打开RCC keil配置 编写代码 制作APP程序...

2022-03-31 15:59:42 4993 2

原创 STM32硬件CRC32问题记录

前言:STM32硬件本身没有问题,只是其中的校验值计算方式跟平常的不太一样硬件平台 我使用的是STM32F103ZET6单片机,用cubeMX新建的工程(使能crc即可加载\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_crc.c文件) CRC特性介绍(文档内容来自STM32中文参考手册) CRC32详细介绍请查看文档 软件平台 方法一:使用cubeMX初始化硬件CRC 方法二:手动添加文件并初始化硬件CRC 打开#d...

2022-03-25 16:21:52 2136

原创 STM32读写float数据到Flash

STM32的Flash库默认支持读写 unsigned int 数据,没有保存float数据接口,因此需要在之前的基础上做数据转换

2020-12-16 17:29:14 2433

原创 STM32之HAL库的串口接收丢字节

HAL库之串口数据收发前言使用cubeMX创建工程文件时,默认使用HAL库。作为最新的主流库有必要认识以及好好学习一番工程配置过程,参考其他人例程即可,此处省略串口发送HAL库的数据此代码摘录于RT-Thread官方移植shell组件,输出字节到控制台void rt_hw_console_output(const char *str){ rt_size_t i = 0, size = 0; char a = '\r'; __HAL_UNLOCK(&hu

2020-09-15 17:09:40 5527 2

原创 SQLite3数据库交叉编译并移植到ARM_v7中运行

简介说明:为什么需要使用到交叉编译?,因为目标ARM版上的ROM有限,并不支持gcc编译,就跟别提安装了,所以需要借助外来平台编译成目标机可运行的文件(库文件或可执行文件),直接丢到目标ARM板上运行即可

2019-11-16 16:32:27 712

原创 USB设备驱动

USB设备驱动实现流程usb为什么能够支持热插拔?设备与驱动的匹配我们知道,一个驱动可以支持多个设备,那么怎样知道驱动支持哪些设备呢?通过usb_driver结构中的id_table成员就可以完成这个功能。id_table成员描述了一个USB驱动所支持的所有USB设备列表,它指向一个usb_device_id数组。usb_device_id结构体包含了USB设备的制造商ID、产品I...

2019-08-19 15:05:25 192

原创 Mdeditor编辑器

Mdeditor:原创Markdown编辑器基于textarea同步预览html不依赖任何插件支持自定义语法压缩版7K使用简单参考示例入口地址链接:https://www.mdeditor.com/

2019-08-19 14:36:55 2793

原创 Linux系统下使用4G模块EC20实现拨号上网

驱动的实现过程实现4G功能分为两步,第一步内核能成功识别出该设备,第二步实现拨号上网.最后提一下自带的定位功能一.添加内核USB驱动这里直接使用内核已经存在的USB驱动,只需要让内核能识别出该USB设备,并自动加载驱动生成对应的/devUSB*设备节点获取EC20的PID和VID把模块插入到开发板上,使用lsusb查看根据USB的ID可以确定模块的版本号修改USB驱动源...

2019-08-16 14:51:59 14377

原创 Socket通讯示例

一 最简例程实现socket网络传输服务器端( 比客户端先运行)vi socket_server.c 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <errno.h> 4 #include <string.h> 5 #include <sys/types....

2019-07-20 18:00:18 243

原创 make出现gnu/stubs-soft.h: No such file or directory

阅前必读历经一天的折磨,最后还得请的我老板出山,半个小时解决问题。心里感慨万千啊,这就是差距,前方的路还长,继续加油!!!以下附上我详细解决思路,以供各位参考...

2019-05-29 19:57:55 3060 2

原创 spidev0.0的正确打开方式

阅前必读该平台基于Freescale的主控imx6ull,本人历时两周时间,走过无数坑,原因是无法精确的找到目前使用的文件,主要是nxp命名模式让我有点尴尬,以至于对于错误的spi文件修改了半天,例如spi-fsl-spi.c该文件就没有使用。以下是系统使用的文件,给后者一点建议免得重蹈覆辙。好了开始说重点部分,重点来了首先驱动代码分为device和drivers,device在dts里面实...

2019-05-28 19:36:55 5389

原创 堆在ROM还是RAM?

写在前面:2018年前的最后一天班,临时总结一下程序在整个嵌入式芯片的运行过程与所涉及到的堆栈问题从头说起普通的嵌入式芯片分为处理器cortex-m4、闪存Flash、内存RAM。其中我们编译成机器码的bin文件是直接烧写进Flash,(后续想要做OTA空中升级的朋友们,只需要修改Flash里面的二进制文件就可以对之前的固件进行升级)。程序开始启动当系统上电后根据BOOT的...

2019-01-31 15:12:09 8589 5

原创 c语言struct结构体强制类型转换

一、 关于struct相关说明1、无结构体标签 struct { int in; int out; }GPIO_t;声明了一个无名结构体,并创建了一个结构体变量GPIO_t(已分配空间),该方法只适合创建一个结构体变量 typedef struct { int in; int out; }GPIO_t; /*静态分配内存*/ GPIO_t GPIOA; /*动态...

2018-11-23 13:54:33 26872 2

原创 c语言的.c和.h的文件关系

.c和.h文件没有必然联系,不一定非得成对存在,可单独实现;.h头文件存在的意义,方便c文件的引用(避免重复)与描述。理论上来说C文件与头文件里的内容,只要是C语言所支持的,无论写什么都可以的,比如你在头文件中写函数体,只要在任何一个C文件包含此头文件就可以将这个函数编译成目标文件的一部分(编译是以C文件为单位的,如果不在任何C文件中包含此头文件的话,这段代码就形同虚设)头文件与c...

2018-06-21 14:56:45 6501

原创 SI4463的数据冲撞解决办法

无线射频数据都存在一个通病就是,空中数据会发生碰撞,而本文就数据冲撞提供了以下两种解决办法。

2018-06-06 18:15:45 8501

原创 结构体对函数指针的高级封装应用

结构体对函数指针的高级封装应用

2017-10-25 10:44:35 1149

原创 对c语言内存的思考

对C语言内存的思考

2017-10-25 10:11:06 210

原创 快速查找算法之为ID卡而生

#include "binary_search.h"//sort_desc_t sort_desc;//general version o(log2^n) int binary_search1(u32 *array, u32 value, u16 num){    u16 low, high, mid;    low = 0;    high = num-1;    w

2017-09-18 18:48:39 745

原创 多个文件共享结构体变量

一、c语言如何调用其他文件定义的结构体成员 1、假设有a、b两个文件 做法一:在a.c中定义结构体 struct student strStudent[10]; 在a.h中写明结构体的具体成员 struct student { char *name;

2017-06-02 11:01:05 6226 1

原创 函数指针数组-callback

#include #include /* run this program using the console pauser or add your own getch, system("pause") or input loop */typedef void(*f_cb)(void);static f_cb file_options[5];  //等同于static

2017-05-26 17:20:59 284

原创 指针*p与地址之间的关系

结论:逻辑内存中,每个字节对应一个地址,也就是每个字符对应一个地址,一个int型的变量由于是4个字节,就会对应4个地址。我们只有取到整型的首地址才能得到完整的int型数据   二.理解为什么char*可以这样char *str =”char test”直接赋值,int型的指针不能直接int *a = {1,2,3}赋值          给指针赋值就是让其指向一个地

2017-05-23 16:05:52 4994

原创 双链表的创建、排序、删除、查找、合并

一、双链表#include #include typedef struct ListNode{int data;struct ListNode *prev;struct ListNode *next;}ListNode;typedef struct List{unsigned int len;struct ListNode *head

2017-05-19 16:25:40 435

Quectel_EC20_ATCommand_GNSS.rar

包含EC20开发所有技术文档,以及源码驱动程序.整合所有资料,绝对满足你的需要

2019-08-16

LoRa开发者必备最新协议和规范

最新版本的LoRaWAN协议规范、无线电区域性开放程度、以及LoRa的详细介绍。

2018-06-08

Si4463标准源码

源代码包含所有si4463寄存器,GPIO,中断等操作。以及实际使用过程的所有问题的解决方案全部包含于代码中。

2018-06-06

空空如也

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

TA关注的人

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