自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (4)
  • 收藏
  • 关注

原创 基于链表的串口接收缓存

使用链表对串口接收的数据进行缓存处理

2024-03-12 11:15:24 203

原创 C# 串口查寻方法改进

改进:使用系统自带接口获取串口,然后通过try尝试哪个串口可用,然后添加到comboBox。串口改进:原来使用try尝试1-20个串口 搜寻比较慢,如果串口号大于20还搜不到。

2023-05-16 11:07:56 268

原创 PC蓝牙加串口调试助手调试蓝牙设备

PC蓝牙加串口调试助手调试蓝牙设备

2022-06-20 15:57:07 13456 4

转载 C#调用带结构体指针的C Dll的方法

转载文章 如有侵权联系删除https://www.cnblogs.com/ye-ming/p/8004314.htmlC#调用带结构体指针的C Dll的方法在C#中调用C(C++)类的DLL的时候,有时候C的接口函数包含很多参数,而且有的时候这些参数有可能是个结构体,而且有可能是结构体指针,那么在C#到底该如何安全的调用这样的DLL接口函数呢?本文将详细介绍如何调用各种参数的方法。一、调用接口仅含普通变量int fnAdd(int num1,int num2);那么在C#调用这种函数.

2021-04-06 10:51:31 810

原创 STM32F4 IAP跳转地址设置

STM32F4系列内部flash的块非常大,前面4个16KB 第5个扇区64K,后面的几个128KB为应用程序。如下图:一般Bootload放在开头flash,后面跟着app程序。所以跳转地址一定要设置好,看扇区分布应该选用4000、8000、C000、10000等地址,一定要放在放在扇区的开头上 避免APP更新时擦除整个扇区时误把bootload所在的扇区擦除掉,造成bootload损坏。开始时没注意这个问题以为设置跳转地址只要是4的倍数就可以,造成APP只能更新一次,再次更新时直接死机,原因就是

2020-06-09 13:39:13 1615

原创 使用Cjson解析造成内存溢出的解决办法

最近使用cjson解析json数据,在使用过程中发现有很多网友说运行一段时间,会造成内存申请失败,死机等情况,我也遇到了内存申请失败的问题,后来发现了如下几个问题1.申请了内存没有释放 造成内存申请失败,下面记录下使用的注意问题(1)使用root = cJSON_Parse(text); //将文本转成json格式,次函数里面申请了一块内存给root 所以在最后要释放rootcJS...

2020-03-09 14:33:05 10101 4

原创 使用FATFS修改完文本在写进去

我想把一个文本内容读出来,修改完以后在写进去。测试已经可以读出来修改了,但是写进去的时候遇到了一些问题,开始的时候没有移动文件指针,写进去的数据在原文文件后面追加了。后来使用f_lseek(f_check,0);把指针移到最开始,然后在写进去,这次发现如果写的文件长度小于原来的文件长度,会造成原来的文件留下一点,没有完全覆盖。后来查看FATFS的文档发现了一个截断文件函数:FRESULT ...

2020-03-09 13:59:39 1424

原创 sscanf的简单应用

最近做wifi模块联网获取数据,期间用到一下模块返回的字符串数据要处理,搜了一下找到sscanf这个函数,用起来很方便。sscanf是stdio.h的函数,用于格式化字符串并输出,下面记录下应用方法,方便以后  1. 常见用法。  charstr[512]={0};  sscanf("123456","%s",str);  printf("str=%s",str); //输出123...

2020-03-05 10:33:29 193

原创 curl安装

下载curlhttps://curl.haxx.se/download.html如下:解压缩到D盘根目录:D:\curl-7.64.1添加环境变量CURL_HOME=D:\curl-7.64.1添加path;%CURL_HOME%\I386;C:\Program Files (x86)\GnuWin32\bin打开CMD 输入 curl --help...

2020-02-20 10:04:14 248

转载 PID整定方法

转自:https://www.zhihu.com/question/27478212/answer/136494252知乎用户 17 人赞同了该回答个人总结的,希望有所帮助,都是平时搜索到的,然后整理的干货1.在不发生震荡时,增大比例系数,减小积分时间(增大积分系数)。超调过大,则增大积分时间(减小积分系数)。若想加快响应速度则可减小积分时间(增大积分系数)。2.确定...

2019-10-22 15:50:00 40093 4

原创 SPWM实现方法-(2)单定时器中断更新模式

前面介绍了双定时器实现的方法,这篇介绍下单定时器实现方法二.SPWM实现方法-单定时器中断更新模式同样使用采用查表法。定时器(TIM-A)设置为PWM模式。载波:TIM-A 定时器的PWM频率基波周期:载波周期*SPWM点数例:载波f=20KHZ基波F=50HZ TIM-A PWM周期为0.05ms ,如果达到50HZ的基波输出,需要定时器在一个...

2019-10-22 14:40:45 888

原创 SPWM实现方法-(1)双定时器模式

最近在研究SPWM逆变的实现方法,结合一些网上资料总结了几种实现方法,同时做了一款SPWM逆变实验板,和简单的上位机控制软件。现将一些实现方法总结如下:一.SPWM实现方法-双定时器模式使用双定时器实现,一个定时器(TIM-A)用来生成PWM,另一个定时器(TIM-B)用来固定时间修改定时器(TIM-A)的PWM占空比。载波:TIM-A 定时器的PWM频率基波周期:TIM-B中断时...

2019-10-22 14:01:41 1732 2

原创 STM32 串口实现7位数据位 1位偶校验 1位停止位

UART5设置为8,N,1,模式串口设置为8,N,1模式 在发送数据时通过程序判断偶校验然后填到数据位的第8位,这样数据发送时就是7位数据位 1位偶校验 1位ting停止位。在接收数据时去掉数据第8位,程序连接:https://download.csdn.net/download/louyangyang91/11328585...

2019-07-11 13:54:09 6640

转载 RGB888转RGB565 抖动算法

试试这种抖动算法。https://en.wikipedia.org/wiki/Ordered_dithering ============================================ /* Dither Tresshold for Red Channel */ static const BYTE dither_tresshold_r[64] = { ...

2019-06-05 17:04:42 1744

原创 STM32F4 UART1 DMA收发的一些问题解决

早些时间写过一篇“STM32F4 UART1 DMA发送和接收不定长度数据”的博文。很多转载的都不注明出处的。后来就没再怎么用过F4的uart 也有朋友反映过会莫名的进接受完成中断,但是实际接受的数据量并没有达到设置的DMA接受长度,应该不会进DMA接收中断,我也没搞明白就不了了之了,可看这个链接:http://www.openedv.com/forum.php?mod=viewthread&a...

2019-04-21 15:58:05 3442

原创 stemwin 使用GUI_EndDialog切换页面死机的解决

最近学时使用emwin 在切换窗口时进入HardFault_Handler,后来发现在创建的窗口内没有处理WM_PAINT消息的操作,添加后在case内执行清屏,这样在切换界面时就不会发生死机。示意代码如下:static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int ...

2019-04-12 14:33:28 4338

原创 STM32 正交编码器代码

/******************** (C) COPYRIGHT 2007 STMicroelectronics ********************* File Name : stm32f10x_encoder.c * Author : IMS Systems Lab * Date First Issued : 21/11/07*...

2019-04-08 16:43:03 1694

原创 低能耗配电开关 USB过流保护芯片USB限流保护SY6280

输入电压2.4V-5.5V 可编程限流保护芯片。 替代品:BL2554(上海贝岭)、AAT4610限流计算I(A)=6800/Reset(Ω) 最大限流2A 最小限流0.4A一。参考电路EN脚高电平有效。二。引脚说明Pin5 电压输入Pin2 GNDPin1 电压输出Pin4 输出使能脚 高有效(大于2V)Pin3 可编程的输出电流ko控制脚,...

2019-04-08 12:32:27 9959 1

原创 stemwin 实现显示屏幕滑动

最近在借助一个项目学习使用emwin的使用,xia显示屏用的19264,显示的数据有限,无法shix实现一页全部显示出来,想着可以通过聚焦的控件判断是否需要翻页。zhuy主要思路是:创建父窗口(父窗口尺寸192*64),然后创建子窗口(子窗口尺寸192*120)。这样youy有一部小工具会超出物理显示尺寸,在qieh切换焦点时判断当前聚焦的小工具,然后实现翻页。一。创建父窗口和子窗口,设置窗口...

2019-04-04 12:21:01 4026

原创 stemwin 19264液晶屏底层驱动编写

使用stemwin会使开发界面编的简单快捷。对于单色屏19264只需要编写打点和获取点这两个函数。19264在Y方向显示上使用分页显示,即有8页 192列,所以在编写dadi大点函数时最简便的方法就是分配一块显示hua缓存,所有数据的显示都通过操作这块现存来实现。下面贴出代码方便以后查看//定义显示缓存64行192列 由于64行 必须同时操作一页所以数组定义64/8页char g_arr...

2019-03-30 12:31:17 1846 1

原创 stemwin 实体键使用GUI_SendKeyMsg发送消息卡死的问题

解决移植单色屏时使用了实体键发送窗口处理消息时导致卡死。在操作实体键时发送对应的消息,用到最多的是GUI_SendKeyMsg(GUI_KEY_TAB,1); //制表键,可以用来切换焦点聚焦到不同的小工具上。期间操作按键发送TAB消息时发现总是进入HardFault_Handler,但是放在emwin窗口定时里面发送TAB消息就不会进入HardFault_Handler。怀疑和KEY任务有关...

2019-03-29 20:29:35 2588

原创 stemwin 19264单色屏移植

一.GUIConf.C文件的修改 修改emwin内存/*********************************************************************** Defines************************************************************************///// ...

2019-03-29 12:39:07 2026

原创 STM32F103VET6利用片内FLASH虚拟U盘,使用文件复制方式实现IAP

在原子论坛偶尔搜到一篇 利用STM32片内FLASH虚拟U盘,使用文件复制方式实现IAP的帖子http://www.openedv.com/forum.php?mod=viewthread&tid=39012&extra=page%3D1  按照楼主提供的代码修改了一下发现不能用,仔细阅读相关zizi资料(《5 分钟用 STM32的内置 Flash 做一个超小 U 盘》)发现了我用...

2018-11-08 20:42:43 8167 2

原创 lwip2.1.0 pool的声明和pool的地址指针数组

/*lwip2.1.0 POOL的声明和获取每个pool的地址*///-----------------------------------------------------------------------------------//lwip-2.1.0\src\core\memp.c//声明每种类型的pool#define LWIP_MEMPOOL(name,num,size,de...

2018-10-31 21:24:53 544

原创 利用宏定义__DATE__和__TIME__做软件版本控制

利用C的预定义符号__DATE__和__TIME__获取软件编译时间,可用来设置系统默认时间或者作为版本更新时间# include <stdio.h># include <stdlib.h>#include "..\MALLOC\malloc.h"//时间结构体typedef struct{    vu8 nHour;    vu8 nMinute; ...

2018-10-31 19:18:32 20903 2

转载 C语言字符串与数字相互转换

在C/C++语言中没有专门的字符串变量,通常用字符数组来存放字符串。字符串是以“\0”作为结束符。C/C++提供了丰富的字符串处理函数,下面列出了几个最常用的函数。  ● 字符串输出函数puts。  ● 字符串输出函数gets。  ● 字符串连接函数strcat。  ● 字符串复制函数strcpy。  ● 测字符串长度函数strlen。字符串是面试的重点考查部分的相关知识,...

2018-10-31 19:00:38 16866

转载 PC通过串口助手如何给单片机发送小数,单片机接收后如何处理?

两种思路,供参考。1. 原始字节按原始字节数据发送,这也是我个人比较倾向的方式。首先,位、字节和字节流本身没有任何意义,如果按约定的方式去解析,才能有具体的含义。用什么约定方式呢?使用符合IEEE 754的浮点数标准,每个浮点数为4个字节,按标准解析就可以了。其实这个标准,包括STM32在内的很多微控制器,都是支持的,内部的表达方式都是一致的,而且效率很快。技巧就是定义好一个联合体,这一步很关键:...

2018-10-17 09:46:29 8107 1

原创 ADS1248 结果计算

前面一篇文章说明了ADS1248寄存器配置和AD转换,转换以后就会得到AD值,但是如何计算出实际的PT100电阻值那??找了相关资料看了看发现了计算公式  验证后发现转换出的电阻挺稳定的(先不考虑准不准的问题,这个需要每个通道标定才可以)下面贴出相应的文档http://www.ti.com/lit/ug/slau520a/slau520a.pdf电路参数:差分输入,电流源I1=1ma,I2=1ma...

2018-04-21 15:59:12 3932 1

原创 ADS1248 寄存器配置和通道转换

ADS1248是TI的一款24位delta-sigma(ΔΣ) 、2KSPS、8通道(4通道差分)ADC芯片。TI官方有RTD设计方案,参考文档做了一板4通道3线PT100温度采集。调试ADS1248过程中遇到一些问题,记录下来方便以后使用。参考代码:ADS1x4x Firmware Example Code1》在配置寄存器的时候一定要注意将START引脚拉高在配置,否则配置不成功。2》在配置过程...

2018-04-20 11:00:52 11307 5

原创 STM32F103 CAN通信的滤波器设置

刚开始接触CAN通信,测试过收发后,还需要使用标识符过滤来实现固定节点的数据收发。记录一下“屏蔽位模式”下滤波参数的设置。发送代码如下://can发送一组数据(固定格式:ID为0X123,标准帧,数据帧) //len:数据长度(最大为8)     //msg:数据指针,最大为8个字节.//返回值:0,成功;// 其他,失败;u8 Can_Send_Msg(u8* msg,u8 len)...

2018-04-09 15:34:00 5051 2

原创 STM32 输入捕获模式的滤波器设置

一.设置TIMx_CR1的CKD[1:0]位,设置时钟分频因子得到fDTS。如下图:二设置TIMx_CCMR1寄存器的IC1F[3: 0]位。滤波采样频率和采样次数。如下图举例:定时器输入时钟频率fCK_INT=72M。CKD[1:0]=

2017-12-29 13:03:54 9603 6

转载 LDR指令和LDR伪指令区别

ARM指令集中,LDR通常都是作加载指令,但是它也可以作伪指令。初学者一般不会注意到它们的区别,其实在嵌入式开发过程中,这两条指令时非常常用的!我们应该了解他们的区别。LDR伪指令的形式是“LDR Rn,=expr”。作用是装在一个32bit常数和一个地址到寄存器。下面举一个例子来说明它的用法。COUNT EQU 0x56000054LDR R1,=COUNTM

2017-12-27 22:02:41 2254

转载 GNU AS ARM Reference V2

GNU ARM指令参考。。。http://re-eject.gbadev.org/files/GasARMRef.pdf

2017-12-27 14:21:18 398

原创 Target: x86_64-linux-gnu下实现gcc -m32

暗装的Ubuntu是64位的想实现32位编译链接需要安装X86的库,为安装前执行gcc -m32 -o x x.c会提示In file included from /usr/include/stdio.h:27:0,                 from push_test.c:12:/usr/include/features.h:367:25: fatal error: sys/

2017-12-19 21:17:44 3544

原创 基于链表的时间片轮询程序结构

通过链表添加时间片程序,程序执行后依次查询节点时间片判断是否执行节点函数u8 task_add(uint16_t id,uint32_t NeedTime,void *func,u8 En) 添加任务函数,同时通过NeedTime设置轮询时间,u8 En用来使能节点函数是否执行。void task_TickCut(void)函数放在SysTick 1ms中断内执行时间片递减操作。void task

2017-05-17 09:16:51 1442 3

原创 STM32F030的IAP应用简介

程序收尾总想着以后更新的方便性,采用在应用编程(In Application Programming),通过Bootload引导单片机自己往程序存储器里写数据或修改程序。下面简介STM32F030的IAP方法。不同于STM32F1系列,F0没有中断向量偏移寄存器。所以在APP程序的开头要添加以下代码。为什么这样做??可以看到函数用了for循环将矢量表拷贝到0 x20000000 SRAM的

2016-09-23 19:27:01 5030

原创 STM32 USB的DFU功能

最近用到USB,后来发现了STM32F103可以程序实现DFU,在网上搜到代码对比官方文件发现是大容量FLASH的DFU,我用的是STM32F103C8T6,属于中容量。自己对着官方例程修改了网友的代码,改成中容量后可以使用DFU更新固件。修改过程中要注意几点1.在库函数“void SystemInit (void)”结尾处添加APP程序起始地址,向量表偏移量,开全局中断(在dfu中关闭了中断

2016-07-26 16:50:56 24753 6

原创 STM32F4 定义ucosii到CCM

STM32F4内壁192KRAM 但是很是128k普通RAM和64K CCM RAM,CCM只能内核调用,本来想着192KRAM挺好,结果仔细看悲剧了。但是也不能浪费,可以尝试使用它,把UCOS内核数据放到CCM。网上搜索到一个FreeRTOS的照着他的自己弄了弄。http://www.stmcu.org/module/forum/thread-604814-1-1.html再次感谢该网友。。

2016-05-31 13:51:38 4965

原创 STM32F4时钟配置

看了下时钟树按照http://blog.csdn.net/louyangyang91/article/details/51374924这个博文配置了,结果发现UART波特率不对,但是MOC1\2都是正常输出(168M/5分频输出),蒙了很久才发现USART_Init(USART1, &USART_InitStructure); 这个函数内部会调用RCC_GetClocksFreq(&RCC_C

2016-05-31 09:04:46 4632

原创 STM32F4 RTC的使用

比较F1的片子对于F4的RTC来说有很大提升,F4的RTC提供了日历时钟和两个可编程闹钟中断,一个周期性可编程唤醒标志。这样很方便设置系统时间,并不会像F1的RTC那样要自己计算年月日时分秒。F4的RTC是一个独立的BCD定时计数器,系统可以自动将月份天数补偿为28、29(闰年)、30、31天。并且还可以进行夏令时补偿。由此可见RTC,下面贴出代码方便以后查看(这里特别提一下RTC_Alarm

2016-05-26 10:09:47 11600 1

STM32F407 DAC1播放WAV音乐

使用原子STM32F407开发板“实验43音乐播放器实验”修改的DAC音乐播放试验,仅支持8bit单声道WAV音频播放。通过DAC1接耳机就可以听到音乐。DAC1使用dma双缓冲 定时器6触发。读取SD卡内的wav音乐。

2020-03-16

SysUART5.c

STM32 UART5实现7位数据位 1位偶校验 1位停止位,主要在于发送数据时对数据的处理,和接收数据时对数据的处理

2019-07-11

PT100查表温度值

二分法查表,将PT100的电阻值转为对应温度0-100.00。包含变系数一阶滤波。驱动芯片ADS1248,换算温度小数点2位

2018-09-19

光立方LED焊接说明

讲解光立方LED的弯折方法及焊接方法,模板制作过程。

2015-06-22

空空如也

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

TA关注的人

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