- 博客(35)
- 资源 (29)
- 收藏
- 关注
原创 使用void*强转函数指针(编辑中)
别把函数名当成函数,justa变量typedef void (*AirCb)(void); //空回调函数typedef int (*aimFunction)(int* para1, char* para2, int para3); //要传递的目标函数void businessRegister(uint8_t *pData, uint32_t dataLen, AirCb cb){ if(NULL != cb) { int *realPa...
2022-03-25 22:03:35 1790
原创 VS Code中C/C++ 无法跳转到定义的解决办法
VS code的跳转功能一直很迷,时好时坏,有些新的工程环境干脆用不了。经过一遍遍的baidu加上自己的摸索,总结出一套经验,应该可以解决大部分的情况了。一、首先,当然是安装插件了C/C ++ 和 C++ intellisense 两个是必装的。安装之后记得重启编译器二、关闭编译器再重新打开已安装插件的情况下, 会遇到之前正常的的VS code突然无法跳转了,怎么按都没反应,这时候将编译器重启一下,会发现跳转功能又正常了,好吧,重启大法好。三、添加包含路径1、在VS code界面按 ctrl
2021-05-19 16:44:04 99334 31
原创 Git bash 在使用control+c、control+v之后,打字没有回显的问题
一次偶然,在Gitbash窗口中复制一些信息,切回来之后发现,居然无法打字了,而按回车却有反应。一番搜索之后,也算是找到了解决方案。输入reset然后回车摘录自网上的Rootcause:当运行shell或shell中的大多数程序时,您输入的任何内容都会通过内核的TTY子系统返回到用户的终端。对于擦除字符,Ctrl+R,Ctrl+Z等等,还有其他特殊的处理方式。某些程序,特别是从命令行运行的程序(特别是编辑器)不需要或不想这样做。出于这个原因,他们用IOCTL调用TY(终端)设备向内核发出...
2021-01-14 14:01:23 2423
原创 Const 关键字修饰指针
C语言中const修饰指针要特别注意,共有两种形式,一种是用来限定指向空间的值不能修改;另一种是限定指针不可更改。举例说明如下:int i = 9;int j = 99;int k = 999;const int * ptr1 = &i; //指针1int * const ptr2 =&j; //指针2上面定义了两个指针ptr1和ptr2。在定义1中const限定的是*ptr1,即其指向空间的值不可改变,若改变其指向空间的值如*ptr1=20,则程序会报错;但pt
2020-07-23 10:29:58 170
转载 结构体中动态内存的管理(malloc和free)
C语言中内存的管理主要是依据malloc和free实现的,其中malloc主要是实现内存的分配,而free则是实现内存的释放。虽然这是我们已经很熟悉的,但是还是存在一些问题。特别是当结构体中存在指针的情况下,各种问题也就会展现出来。其中最大的问题是:结构体中指针变量没有指向一块合法的内存空间,就对指针参数进行操作,这也是很多C语言程序员经常犯的错误。简单的实例如下:struct student { char*name; intscore; }s...
2020-07-13 10:40:19 709
原创 C语言 判断相等的条件语句,为什么把数字放在前面?
代码写久了,经常有这样一种疑惑,经常能在别人的代码,或者库中见到这样的写法,0 ==Tick或者1 ==Number ,为什么不写成Tick == 0或者Number == 1呢? 相信很多人都遇到过这样的BUG,程序逻辑与设想的不太一样,但是编译缺没有报错,仔细检查后发现,原来是把Tick == 0写成了Tick = 0,判断条件的语句成了赋值语句,编译器当然不会报错,但是程序已经不能按照预先的设想来跑了。 当判断语句把数字写在前面时,即使敲代码的...
2020-07-02 09:39:08 1782
原创 无线网络干货——信噪比、信号强度、路径损耗、多径干扰、符号间干扰、天线、放大器
不知不觉,已经进入全民物联网时代,随着物联网从业者的增多,越来越多人开始了解物联网,了解无线网络。这其中有许多生涩的概念,困扰着许多初学者(包括我)。刚好近期在阅读一本关于 “802.11 无线网络”的书籍,书中对这些概念解释的比较透彻,特摘录下来,供学习参考。一、信噪比二、信号强度三、路径损耗四、多径干扰五、符号间干扰...
2020-01-10 16:22:17 7340 1
原创 .s19 文件转换为 .hex 和 .bin文件的方法
使用STVD开发时,编译后产生的是 .s19 文件,与Keil 和 IAR常见的.hex .bin文件不同,那么如何将.s19文件转换为常见的文件格式呢? 一、获取工具 burner 下载链接:https://download.csdn.net/download/hb69222/11777942 二、进入burner.e...
2019-09-18 16:29:22 13112 11
原创 STVD环境下开发STM8,如何查看工程占用的Flash、EEPROM、RAM的情况
初次使用STVD + Comsic环境开发STM8时,经常遇到很多困难,毕竟不如Keil 和 IAR 两个环境熟悉,每解决一个问题最好记录下来,既加深印象,又能帮助其他人。废话不多说,见下文: STVD编译好工程后,不知道在哪里查固件占用的FLASH、EEPROM、RAM情况,很不方便,查阅了相关资料后,终于找到一个简单高效的方法,亲测可用!1、首先需要下载一个第三方工...
2019-09-17 19:45:17 1281
转载 【STM8】STM8在STVD平台生成HEX和S19文件的方法
STVD开发平台Debug运行时可以直接download程序到MUC里面。STVP好像只能Download [.s19]的目标文件。网上找来编译S19 和 hex如何切换的教程,记录如下1.工程设置中,Post-Build选项卡中,有如下设置chex -o $(OutputPath)$(TargetSName).s19 $(OutputPath)$(TargetSName).sm8这...
2019-07-29 20:28:59 2976 2
原创 基于SX1276芯片的 LORA 技术开发详解
一、简介LORA,是“Long Range”的简称。LORA 技术,源自于美国的升特公司(Semtech),是一种用于中、长距离传输的技术,相关信息主要从升特公司官网获取,多为英文版本。官网网址:https://www.semtech.com/开发者中心:https://lora-developers.semtech.com/二、资料下载在开发者中心的 Libary 板块...
2019-07-23 14:44:59 12321 14
原创 使用 IAR 开发 STM8 时,传入的参数被改变的原因
从Keil转到IAR,会遇到很多意想不到的怪事,因两种编译器风格不尽相同,故作记录,提醒自己。 将参数传入函数中,仿真时却看到传入的参数值被改变(多为被置零),总结原因如下: 一、 在包含此函数的.h文件中,函数参数的声明和函数定义时参数的声明不一致。 二、 使用该函数时,没有 #include 该 .h文件!!!...
2019-07-22 10:01:08 1074 1
原创 用 IAR 开发 STM8 时,简单软件延时不起作用的原因
近期有幸接手了前任工程师遗留的项目,MCU 选择的是 STM8L151XX,开发工具使用的是 IAR 。打开祖传代码后,通读了一遍,就用ST-Link烧录进去跑程序,结果发现和预想的效果不太一致,尤其是初始化LED闪烁的部分。 代码中LED闪烁原理比较简单,就是传统的更改GPIO电平,再软件延时几百毫秒,然后再改变GPIO电平的方法,这种传统的操作在学单片机第一课就已经开始使用了...
2019-07-19 09:38:06 1195
原创 安卓开发之——String、byte、16进制、10进制互转
近期工作中接触了一下IOT方面的Android应用程序开发,主要应用于BLE的开发,在数据处理的过程中,难免会遇到string、byte、16进制、10进制甚至2进制的数据,互相转换,时间长了脑子一片混乱。于是痛定思痛,花了一下午时间整理了一下各种数据类型的转换方式,则茅塞顿开。 转换成 byte 类型的方法: byte[ ] = String.getbytes( ); ...
2019-07-02 09:31:30 2094
转载 低功耗蓝牙之——BLE 广播数据解析
BLE 设备工作的第一步就是向外广播数据。广播数据中带有设备相关的信息。本文主要说一下 BLE 的广播中的数据的规范以及广播包的解析。广播模式BLE 中有两种角色Central和Peripheral,也就是中心设备和外围设备。中心设备可以主动连接外围设备,外围设备发送广播或者被中心设备连接。外围通过广播被中心设备发现,广播中带有外围设备自身的相关信息。广播包有两种...
2019-06-22 09:50:24 1546
转载 Hex、bin、axf、elf格式文件小结
一、HEXHex文件,一般是指Intel标准的十六进制文件。Intelhex 文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般编程器均支持生成此种格式文件。如,KEIL下可通过配置相关选项来生成HEX目标文件。HEX文件由记录(RECORD)组成。在HEX文件里面,每一行代表一个记录。形如:BBAAAATTHHHH...HHHHCC...
2019-04-27 09:33:57 608
转载 单片机中利用Union联合体打印输出浮点数(小数)
方法一:指针 UART串口有一个缺点,就是发送和接受是一个字节一个字节的接收,如果发送的浮点数那可怎么办啊? 有人会说,那就一个字节一个字节发送啊。那么,我先定义一个double data。32位机中,一个double类型占8个字节,也就是说data需要拆分8块通过UART发送。 现在只有一个变量,那么就声明一个指针指向这个变量吧 double *p; ...
2018-12-25 14:39:31 2324 1
原创 Keil新建Stm32标准工程中 Preprocessor Symbols的作用
(转自正点原子的回复)标准的工程新建办法,是要添加" USE_STDPERIPH_DRIVER,STM32F10X_HD的.USE_STDPERIPH_DRIVER,是告诉编译器,我们需要使用标准库了(实际上是.c/.h文件里面的一个宏,通过这个宏决定是不是要用某些资源,比如库函数的使用)STM32F10X_HD,则是表示我们使用的芯片是大容量的stm32,从而告诉那些.c/.h文件,使用...
2018-11-28 11:12:50 11046
原创 单片机函数传参被改变的原因之一
原本U16的数据,传入函数之后变成U8了,高8位被置零了。后发现罪魁祸首,函数定义和函数声明时参数给定的长度不一,最后统一更改为U16之后,数据完美传输。切记,出现不可思议的问题时,很有可能是犯了低级错误!!! 今天发博,其实是为了1024勋章!!! 今天发博,其实是为了1024勋章!!! 今天发博,其实是为了1024勋章!!! ...
2018-10-24 10:29:26 1300
原创 用Keil编译C51和ARM时,分别生成.Bin文件的方法
一、C51 1、使用srec_cat.exe a、Keil工程需生成.hex文件 b、将srec_cat.exe放在工程路径中任意文件夹下 c、新建一个文本文档,之后填写如下内容,保存后更名为 1.bat (后缀必须为.bat) CD obj ...
2018-08-28 12:21:50 9684 2
原创 STM32将IAP和APP一次性下载进MCU的方法
一、Keil编译生成bin文件 1.在Keil界面点击魔法棒按键(Options for traget) 2.点击User选项卡。 3.将After Build/Rebuild 下的 Run #1打钩,后面写入 fromelf.exe --bin -o "$L@L.bin" "#L" 4.重新编译工程,在输出的文件夹里将有一个和工程名字相同的.bin文件。二、合并.bin文件 1.将I...
2018-06-01 15:50:13 4169 2
转载 详解STM32 PMW计算中的“死区”
pwm"死区"?听起来有点恐怖的样子?pwm"死区"是什么呢?可能很多人都注意过,今天来给大家科普一下pwm"死区"。 "死区"简单解释 通常,大功率电机、变频器等,末端都是由大功率管、IGBT等元件组成的H桥或3相桥。每个桥的上半桥和下半桥是是绝对不能同时导通的,但高速的PWM驱动信号在达到功率元件的控制极时,往往会由于各种各样的原因产生延迟的效果,造成某个半桥元件在应该关断时没有关断,造...
2018-05-31 11:25:45 6135
转载 入门级详细USB移植教程
同上一篇MPU6050一样,我还是写一篇关于USB的帖子,在圈圈等玩USB的大神面前,我掌握的USB知识实在是九牛一毛,所以这篇帖子加上了入门级的修饰语。写这篇帖子主要是为了那些想快速开发USB的人,至于想深入了解USB协议,可以先学完我这个再去看看别的高级教程可能会好点,虽然我强调自己掌握的USB知识不多,但是对于一般的应用已经足够,我这里主要是学会怎么去用USB做自己的东西,而且我觉得刚学完一...
2018-05-03 10:30:05 3325 2
转载 USB枚举过程
USB枚举详细过程剖析 1.主机集线器检测到新设备 主机集线器监视着每个端口的信号电压,当有新设备接入时便可觉察。(集线器端口的两根信号线的每一根都有15kΩ的下拉电阻,而每一个设备在D+都有一个1.5kΩ的上拉电阻。当用USB线将PC和设备接通后,设备的上拉电阻使信号线的电位升高,因此被主机集线器检测到。) 2.主机发送Get_Status请求 每个集线器用中断传输来报告在集线器上的事件。当主...
2018-04-16 08:47:36 130
原创 产品在线升级的功臣——IAP
IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。 通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某...
2018-04-04 09:07:20 259
转载 STM32固件库详解
1.1 基于标准外设库的软件开发1.1.1 STM32标准外设库概述STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。因此,使用固态函数库
2018-01-14 21:09:59 512
转载 STM32是否可以跑linux
操作系统有两种 用MMU的 和 不用MMU的用MMU的是Windows MacOS Linux Android不用MMU的是FreeRTOS VxWorks ucOS...CPU有两种 带MMU的 和 不带MMU的带MMU的有 Cortex-A系列 ARM9 ARM11系列不带MMU的有 Cortex-M系列...STM32是M系列...不可能运行Linux
2018-01-09 11:06:47 5947
转载 STM32和Linux
Linux和stm32一个是软件平台一个是硬件平台,完全不一样的(记住,是平台!)。这样说吧,既然你喜欢单片机,就先学stm32,把硬件基础打牢,尤其是各种总线(usb、iic、spi...)、各种外设模块(红外、温湿、mpu6050...),然后就把注意力集中到ucosii上,也就是说学会把你的任务放到操作系统这个架构里完成,而不是简单地写程序--对操作系统机制的掌握是你和周围的单片机同事拉...
2018-01-09 11:05:58 3469
转载 串口、COM口、TTL、RS232、RS485区别详解
一个嵌入式工程师,无论你做硬件还是软件都会接触到串口、COM口、TTL、RS232、RS485这些概念的。你是否也会一遇到这个概念就要百度一下,谷歌搜过呢?下面就为大家介绍它们之间恩怨情仇吧。1、串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)。2、接设备的时候,一般只接GND RX TX。不会接Vcc或者+3.3v的电源线,避
2017-12-14 10:49:14 5160 1
原创 初出茅庐 之 学习笔记
2017 - 12 - 51.app.json 的Pages下面,各个Page页排在最前的为首页。2.在页面中设置几段文字,用View 可以自动换行,而用Text则会接上一条继续打印。
2017-12-05 22:26:46 222
emWin 移植指南,适用于FreeRTOS、Ucos、裸机等
2021-05-17
CmBacktrace.rar
2021-05-11
Json解析工具——cJSON 移植文件
2020-07-24
天线分类——频段和应用
2019-12-11
USB图解+协议(中文版).rar
2019-09-24
S19、Hex、Bin转换工具.rar
2019-09-18
STVD Size Tool.rar
2019-09-17
SX12xx 中文数据手册+驱动.rar
2019-07-23
ESP8266 AT指令中文指南,超详细,带全部书签!
2019-07-02
Bluetooth Core Specification v5.1 Feature
2019-06-22
srec_cat.exe
2018-08-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人