自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (9)
  • 收藏
  • 关注

原创 关于arm-none-eabi-gcc printf float问题

arm-none-eabi-gcc, printf, float, double

2023-03-13 16:13:23 573

原创 用NTC3950电阻控制DC-DC step-down SX2106实现温控调压

主要材料:1.NTC电阻,如NTC3950 10K2.DC/DC 电源芯片,如SX2106原理:1.NTC电阻阻值随温度变化而变化。NTC3950 温度公式:R(x) = 10ℯ^(3950 (1 / (x + 271.53014) - 1 / (273.15 + 25)))2.DC/DC电源芯片可以通过调整电阻阻值而改变输出电压。SX2106电压输出公式:V(x) = 0.805 (1 + R1 / (R(x) + R2))电路设计:输出曲线:.

2022-04-26 11:57:50 1356

原创 CH340E~STM32~ISP下载电路

CH340E内置晶振,且封装较小,对空间有限的地方较友好,但成本也相对高点。同时只RTS#一个可以控制的输出信号,较CH340G等其它信号少了DTR#信号线。如果同时都有DTR#和RTS#的话就可以分别控制STM32的NRST,BOOT0了。 CH340E 只有一个RTS#信号输出(CTS#只能输入),那就要换个思路了: RTS#先通过一个电容隔离来控制NRST复位,同时通过一个三极管来对另一个电容充电,电容又接到BOOT0。 由于电容充放电是需要时间的,所以当需要拉高BOOT0时,就通过拉低R...

2022-02-25 11:38:13 5582 8

原创 一键开关电路,短按开机,长按关机

主要工作流程:1.分别用三极管Q1、Q2控制P-MOS管Q3的通断。2.Q1控制Q2的通断。3.Q1、Q2的基极分别接一个启动电容C1、C2。 任一时刻按下开关S时,电源VCC都会对C1、C2进行充电,容值越大充电越慢。C1充满时Q1导通,Q1导通时,Q2会强制截止,Q2截止时,Q3也截止。C2充满时,Q2导通,Q2导通Q3就导通。4.当C1远大于C2时,结果就时短按开,长按关,一直长按先开后关。电路仿真地址:https://www.falstad.com/circuit/c...

2022-02-14 18:36:25 3491

原创 过压保护电路

电压正常时:过压时:

2022-01-10 16:24:33 849 3

原创 js javascript UTF-8 GB2312编码转换

在用js做项目时,接收方是要用GB2312的汉字编码,而发送方用的是UTF-8汉字编码。这里就要做汉字编码转换了。 网上找了一下午也没找到通用的方法,那只能自己做一个汉字编码对应表了。关键是要自己弄一个汉字编码对应表先按键GB2312汉字的编码顺序生成一个表,再把生成的GB2312表转向成UTF-8、UCS2-BigEndian,UCS-LittleEndian的表。那么同一个位置就是同一个汉字的编码了。var _GB2312_1_87=[0xA1A...

2021-12-28 15:13:54 14155 2

原创 GB2312 UTF8 UCS2汉字编码对应表

GB2312 与UTF8 编码按顺序对应表

2021-12-24 20:28:21 3972

原创 怎么写CORTEX在windows用arm-none-eabi-gcc编译时的makefile

首先明白编译的目标文件是啥,搞单片机一般要用到的就是.hex,.bin,.elf. 而有了.elf就能转换成*.hex和*.bin.所以目标是生成*.elf文件,而elf文件是由*.o文件链接而成,.o文件是由.c,*.cpp, .s等文件生成。*#mermaid-svg-l6j2rQZ2GsEbuepo .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;c

2021-11-22 14:56:59 583

原创 inavFilter 惯导融合算法

typedef struct estimatorStruct { float pos[3]; float vel[3]; float acc[3]; }estimator_s;/** * @brief: 根据位置加速度来计算位置和速度 Inertial filter, implementation taken from PX4 implementation by Anton Babushkin <rk3dov@gmai...

2021-09-23 23:09:20 360

原创 飞控所有PID参数都无法消除振荡问题

原因:陀螺的数据滞后了。自己写飞控PID控制时发现,只要加一点点P时都会加速振荡,怎么修改P都无法达到稳定状态。首先怀疑的是电机的方向弄反了,把电机反向后,增加P能减少一点点的振荡次数,但也无法达到稳定状。同时也发现D的运算结果会有0交替出现。微分出现0,说明运算时,数据没有变化还时上次的数据,也就是说数据没有跟上。但是芯片手册上说这个陀螺仪是有200Hz输出的。然后去找原始数据。原始数据是根据状态寄存器的状态来判断,然而状态来的频率远没有达到200Hz,去掉状态判断直接拿...

2021-02-23 18:32:34 2820 1

原创 数字低通滤波算法及截止频率计算,pt1Filter,lpf

参考模电RC滤波计算公式来计算截止频率#define M_PI_FLOAT 3.14159265358979323846ftypedef struct LpfFilter{ float RC;//模电RC滤波的电阻和电容值的积 float dT;//数据更新时间隔(秒) float k;//滤波系数 float state;//滤波结果}LpfFilter_t;/**设置滤波的截止频率* *filter:* f_cut:截止频率* dt: 数据更

2021-02-21 21:16:30 8140

原创 undefined reference to `__errno‘ 解决办法

链接时加入 -specs=rdimon.specs -specs=nosys.specs“-lm -lc -lgcc”这几个有没有都无所谓,顺序更加无所谓!参考https://www.openstm32.org/forumthread1291#threadId3842

2020-11-30 22:05:07 3583 1

原创 AT32F415 USART1、2、3,DMA 用结构体统一配置收发

AT32F415 USART1、2、3,DMA收发1、串口1,2,3的收发原理都是一样的, 所以配置上都可以一起来,不同的地方再用指针引用。2、程序基本流程串口配置,DMA配置,接收时用空闲中断,发送时用发送中断来关闭DMA.(打开DMA后,串口的收发完成中断会对接到DMA的传输完成中断)3、串口缓存和DMA缓存用两个独立,防止接收时有冲突。4、接收时看空闲中断信号,有信号说明接收完了,把数据拿出来,DMA读数清零来重新接收,状态改为接收完成5、发送时要手动开启DMA传输,传输完成后会产生串口中

2020-08-31 17:37:04 2455

原创 windows10 强制关闭全屏游戏卡死的方法

玩游戏时,游戏卡死后会依旧强行占据在窗口的,按ALT+F4也没反应,就算ctrl+alt+del调出任务管理器也会被挡住,真的烦死了!!!!!!!!!!然后在网上搜索说新建一个桌面,再在新建的桌面上打开任务管理器会结束程序,然而打开任务管理器后,任务管理器会自动弹窗到第一桌面启动,可是第一桌面就是被游戏画片卡住的桌面,搞毛啊?!!!!什么鬼设定?!!!最后想起来了cmd的taskkill也能结束程序,那么就试试吧,不行主要重启了1、新建桌面:win+tab,选择新建桌面2、按win,在开始菜

2020-08-07 00:15:12 14968 1

原创 在windows 实现执行 makefile

需要安装软件:1.cygwin 实现make功能2.GNU Arm Embedded Toolchain Cortex-M编译工具链3.VS code 编辑代码。一、安装Cygwin1.下载Cygwinsetup-x86_64.exe:https://www.cygwin.com/2.安装Cygwin注意必选工具包:要新增工具包只要重新运行一下setup-x86_64.exe装完后试试make指令,出现下图表明make能用了二、安装...

2020-05-28 11:33:06 10699

原创 stm32 复位到内部bootloader

sm32的bootloader一般是通过开机时设置boot0=1来实现的。下面是通过程序来实现:原来的startup文件是直接把flash的数据加载到ram里面然后跑main函数循环bootloader的程序在0x1FFF D800那只要在进入main函数之前先判断是否要进入bootloader,如果要进入bootloader,就载入0x1fff d800这个地址就好了。否则就继续未修改之前的操作。void systemReset(void){ // Generate sys..

2020-05-20 17:50:46 1549

原创 无人机定高算法

高度控制:高于目标值时应该减速,要输出负值,所以高度差=目标高度-当前高度速度控制:向上时(速度为正)应该减速,要输出负值,所以速度差=高度差的速度-当前速度如果只有高度控制时:出现高度变化时,高度差要么是正数要么是负数。即使高度差会慢慢变小,但是高度差在没有有到达目标高度时,高度差的符号是不会变的,符号不变就一直加速,尽管加速度在变小,有加速就一定会越过目标值。越过目标值才会开始减速。在减速开始的瞬间,就意味着已经过越过目标点。高度差又出现了,再次重复上面的过程。所以不管怎么调PID参数,都不可能

2020-05-20 12:11:29 7560 8

原创 STM32 关闭全局中断

/** \brief Enable IRQ Interrupts This function enables IRQ interrupts by clearing the I-bit in the CPSR. Can only be executed in Privileged modes. */__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void){ __ASM volatile ("cp.

2020-05-16 20:53:32 4523

原创 NRF24L01+ 自动重发,自动应答BUG

nrf24l01+有个失败自动重发,多次自动重发失败后会产生中断的功能。可是有个bug,就是达到了最大失败重发次数,清理MAX_RT中断后,立马转成转成接收模式,然后就会收到一个发送成功的标志。注意是 发送成功 标志,不是 接收成功 标志。可是上次不是多次重发都失败了吗,哪来的成功发送???...

2020-05-07 11:55:16 1527

原创 超声波定高--过滤突然出现的障碍物

超声波测到的数据会有一点毛刺,先用中值滤波,可以很好去掉突变太大的数据.为什么不用均值滤波呢,均值滤波对数据的实时性影响比较大. 对中值滤波后的数据做一定的统计,计算出数据的变化量和离散程度.我能想到的就是前后数据的差值,若干个数据的方差. 差值能直接反应数据的突变,方差能够强烈的反应数据的波动. 对数据进行判断,差值太大的不能要,方差太大的也不能要.这都说明超声波受到了明显的干扰:前方突然出...

2020-04-30 13:42:00 1208

原创 STM32 ISP 下载程序, C源码,

鉴于flymcu下载时有点慢,flash_loader.exe容易卡死的原因,所以决定自己写个串口编程和控制台程序。STM32_ISP的协议文档可以在st的官网上找到。先说下控制台的大致思路:程序的目标:把*.bin文件通过指定串口发送到stm32,stm32把收到的*.bin文件数据存到指定的flash地址。控制台这边要给的指令是:例如:COM4 256000 0X0800000...

2020-04-27 01:32:07 2030 2

原创 关于用串口IDLE中断,DMA_GetCurrDataCounter()函数值不变的问题

把STM32F103C8T6的USART1 RX配置成用DMA接收,再打开IDLED中断,然后再在IDLE中断时读取DMA的数据,这时就要去读取DMA_GetCurrDataCounter(DMA1_Channel5);有传输了多少人数据。但是,每次读到的数值都是不变的!!!可是DMA读出来的数据都是正确的。到底是什么原因呢。然后仔细观察数据时会发现,每次IDLE时读到的数据都是上一帧...

2020-04-24 18:12:18 5256

原创 CleanFlight 源码分析 一,任务调度

CleanerFlight的任务调度用的是时间片查询的方式。每个任务没有自己的堆栈,不会进行强行跳转。任何一个任务时间过长都会导致其它任务时间延迟(所以不要乱用Delay()).系统工作步骤:1.初始化任务列表2.任务循环调度任务系统就两个文件:scheduler.h,scheduler.c自定义任务:[TASK_SERIAL] = { .taskName ...

2020-04-17 15:52:56 635

原创 GCC 链接时出现undefined reference to “...”时可能解决办法

undefined reference to “...”顾名思义就是没找到,没找到的原因有两个1.不存在。不存在就想办法加进去。2.找错地方。GCC链接时的特点是按顺序连接的,重点:按顺序!顺序!序!比如有三个库:A,B,C:A调用了B, B调用了C,那么链接的顺序必须是: 先链接A,再链接B,再链接C.如果不是这个顺序,就会出现undefined re...

2020-03-24 11:58:22 3247

原创 用Visual Studio 2019 开发stm32,cortex-m3, arm

1.下载Visual Studio Community 2019https://visualstudio.microsoft.com/zh-hans/vs/2.添加vs上面的Linux工具,cmake工具,IOT开发工具3.stm32工程配置不推荐使用stm32 cubex生成的makefile工程,因为我试过好多次编译出来的bin文件都不能运行,不知道为什么......

2019-11-25 20:44:44 19791 21

原创 LT8920无线通讯程序

LT8920是一超便宜的2.4GHz无线芯片,用来做小东西非常不错,废话不多说,直接上代码#include "stc8_spi.h"#include <intrins.h>#include "lt8920.h"#include "delay.h"#include <stdio.h>#include <string.h>xdata u8 tx_b...

2019-07-01 19:57:29 6484 6

原创 NTC温度检测程序

NTC公式:RT = RN *EXP(B*(1/T-1/TN))对上面的公式解释如下:1. RT 是热敏电阻的当前阻值;2. R是热敏电阻在TN常温下的标称阻值;3. B值是热敏电阻的温度系数;4. EXP是e的n次方;5. 这里T和TN指的是K度即开尔文温度,K度=273.15(绝对温度)+摄氏度;6....

2019-07-01 19:55:02 20807 22

原创 AM2320 温湿度计 单总线读取数据

温湿度计 用单总线方式读取数据AM2320支持IIC通信和单总线通信,这里只用单总线:使用单总线时的接线方式时,只需接第二引脚SDA,SCL接地就行。通信时序图:由时序可见通信非常简单,关键点要把握好每个时序的时间。程序思路:1.握手:先是发送0.8~20ms的开始信号,然后等待AM2320的应答,要确保应答信号是先是80us的低电平...

2017-06-02 17:38:39 8638 3

转载 关于华硕主板“USB Devices Over Current Status Detected!”

在连续玩了4~5个小时游戏之后,电脑突然死了,然后闻到一股烧焦味,之后开机出现了:please enter setup to recover BIOS setting USB Device Over Current Status Detected !!System Will Shut Down After 15 Seconds.” 去百度找了一下,usb device over c

2017-05-19 11:05:21 25554

GB2312_UTF8.c

// GB2312原始编码从0XA1A0到0XFEFF。从01到94个区,其中10~15,(6个区)没有编码,88~94区(7区)没有编码。 //有效编码区只有81个区,分别是01~09区、6~87区 //每个区有从0xXXA1到0xXXDE,A0和EF都没有编码,有效编码94个 //所以共有编码个数94*81=7614。 // GB2312的编码为两个字节,转UTF编码后有3个字节,转UCS编码有2个字节。 // Unicode编码会用UCS-BIG或者UCS-LITTLE(大端或者小端),它们的区别就是高低字节位置不同。 //比如中文编码 // “哈”: // GB2312 0xB9FE // UTF-8 0xE59388 // UCS-BIG 0x54C8 // UCS-LITTLE 0xC854

2022-01-13

GB2312,UTF8,UCS2汉字编码生成与转换工具

GB2312,UTF8,UCS2汉字编码生成与转换

2021-12-28

GB2312_UTF8.c

GB2312 UTF8编码对应表

2021-12-24

C51_CMAKE_TEMPLETE.rar

使用开源8051编译工具SDCC,和VS上的CMAKE来搭建8051的开发环境,替代商业软件Keil, VS也是Community版本(免费IDE)。例程会生成hex和bin文件,烧录到STC15系列芯片后,串口会隔一秒打印“Hello world!”.解压后用vs打开文件夹即可自动载入工程。vs前提要安装CMAKE.

2020-07-03

stm32_isp_programmer_source.zip

STM32 ISP 下载程序, windows 控制台 C源码, 推荐用VS编译,附带一个已经编译好的可执行程序.程序说明:https://blog.csdn.net/u013866683/article/details/105781048

2020-04-27

VS2019_IOT_STM32_templete.rar

在VS2019上面开发STM32的例程,使用VS2019的IOT工具,STM32的标准库,已经经弄好CMakelists.txt,可以直接编译通过并生成bin文件,下载到stm32f103c8t6后会不断打印“Hello world”.

2019-11-26

STM32F1xx_DFP.rar

STM32F1xx系列的C语言标准库,有keil的可以直接安装,不用keil的,也可以把库复制出来用在其它地方开发

2019-11-25

NE555无极调速.rar

用NE555纯硬件电路设计的PWM产生电路板,可以通过调节电位器输出不同的占空比

2019-07-01

NRF24L01Receiver.rar

用NRF24L01做的无线接收放模块,已写好对频协议,可以自定义频道,自定义接收数据长度,收到的数据用串口打印出来,用的PCB天线通信距离50M没问题,有原理图,PCB和源代码

2019-07-01

空空如也

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

TA关注的人

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