- 博客(41)
- 资源 (9)
- 问答 (7)
- 收藏
- 关注

原创 单片机、嵌入式开发及项目管理更多技术文章请关注我的百家号及头条号的分享
平时博客分享的都是技术文章,我的更多技术文章请移步关注:百家号:https://author.baidu.com/home?context=%7B%22app_id%22%3A%221646108714303504%22%7D&wfr=bjh百家号二维码:头条号:https://www.toutiao.com/c/user/8115738721/#mid=16460...
2019-11-01 21:05:06
680
原创 C实用技巧
以下是我总结的程序里面常见的C用法和技巧。 1.printf输出数据格式: 下面一段代码:#include <stdio.h>int main(){ int i = 0x200, j = 0x2; printf("%2x\n", i); printf("%02x\n", j);}在Visual Studio 验证,运行结果:200 02 x 表示以十六进制的输出
2017-09-08 20:49:39
748
原创 CC2541广播MAC地址
一、简述 在实际BLE应用开发中,需要设备广播蓝牙标签MAC,比如苹果手机获取不到设备Mac,这是需要广播设备信息中附带MAC标识,外加自定义广播数据,如果考虑到存在安全隐患,因为广播包随时都可以被抓包。BLE协议栈自带加密解密API函数,可以通过调用此函数实现。如下://加密函数LL_Encrypt(key,data,EncryptedData); //解密函数LL_EXT_Decrypt
2017-03-02 22:08:10
3284
转载 Qt资料大全
转载出处:http://blog.youkuaiyun.com/liang19890820简述发福利了、发福利了、发福利了,重要的事情说三遍。。。为了方便更多Qter了解、学习Qt,现将相关资源进行整理,主要内容包括:Qt官网、编码风格、GitHub & Third-Party、社区论坛、博客、书籍等。满满的都是干货,独乐乐不如众乐乐。。。简述Qt官网编码风格Git
2017-02-17 14:08:02
63925
原创 QT 5.3 应用程序打包成可执行程序exe
众所周知QT编译好的应用程序依赖很多动态链接库,不能方便的在其他PC上使用。这里介绍QT5版本的应用程序打包成可执行EXE的方法。 首先把QT应用程序项目编译成Release版本,而不是Debug版本。Debug版本包括很多的调试信息,所以要比Release版本大很多,相对Debug来说Release运行效率也就高一些。 为了方便,在工程release文件夹下拷贝出编译好的.exe文件,另建一个
2017-01-15 12:21:04
13210
原创 QT TCP Server
主要是实现了TCP服务器端的上位机应用,包括数据收发(字符串及十六进制数据),传输文件的功能,经测试可用。下面主要说明一下几个基于QT的函数: 服务器端读取数据函数:void Widget::ServerReadData(){ QString s; QString buf; QByteArray data=clientConnection->readAll();
2017-01-11 21:07:44
2372
1
原创 RFID MFRC522
一.RFID综述 RFID目前有广泛的应用前景,通过射频识别在标签和读卡器之间交换数据,可单向读写数据,RFID的频段有低频(125KHz到135KHz),高频(13.56MHz)和超高频(860MHz到960MHz之间,读卡器和标签可以是一对多。而NFC作为近距离无线通信技术,仅限于13.56MHz的频段,可以双向数据通信,读卡器和标签只能一对一读写数据。RFID系统由三部分组成,分别是电子标签
2016-12-23 21:07:10
12919
原创 NXP QN9020 BLE协议栈学习笔记
NXP QN9020 BLE协议栈学习笔记1.需要的硬件及软件工具: 硬件工具: 1) QN9020 Mini DK board 2)USB dongle 软件工具: 1)BLE协议栈(QBlue-1.3.9) 2)KEIL/ IAR开发软件 BLE协议栈安装目录下文件夹说明: BinFiles_B2—–所有例程的可执行bin文件; Documents—–有关QN9020 SDK
2016-12-05 22:09:04
5177
1
原创 stm32 以太网 LWIP TFTP IAP 远程升级
一.综述 本文是基于STM32F107的LWIP协议栈通过TFTP的文件传输协议进行IAP程序升级。本例采用的PHY层芯片是DP83848,相当于物理层,STM32F107自带的MAC层相当于数据链路层,而LWIP协议栈提供的就是网络层、传输层的功能,应用层是需要我们自己根据自己想要的功能去实现的。升级程序由bootloader和APP两部分组成。将stm32 flash划分为两个分区,bootl
2016-11-19 10:27:06
19394
6
原创 KEIL工程编译出现Error command-line cannot open preprocessing output output file错误
KEIL工程编译出现flash.c: Error: command-line: #564: cannot open preprocessing output output file错误,原因有: 1.Option选项卡-Output选项-Select Folder For Objects输出文件夹出现了中文名,如下: 2.文件属性为只读。 解决办法:1.更改输出文件夹名称避免出现中文或者
2016-10-14 22:57:36
9510
原创 Packet Sniffer设置过滤MAC地址
一.综述 在蓝牙开发过程中,为了验证广播设备数据的正确性,需要抓包分析数据帧。但是周围有很多蓝牙广播设备的时候抓取我们需要的设备数据包不是很方便,需要过滤掉无用的Mac地址,方便调试。本节介绍如何使用Packet Sniffer软件设置过滤选择我们需要的设备MAC地址。 二.软件工具 Packet Sniffer Usb dongle (固件为sniffer_fw_cc2540_usb.he
2016-08-31 21:08:24
5236
原创 BLE CC2541修改广播时间
一、问题: 如何修改广播持续时间 二、内容 以广播者为例,在simpleBLEBroadcaster.c中: 1.设置广告持续时间//Maximum time to remain advertising, when in Limited Discoverable mode. unit is seconds#define LIMIT_ADV_TIMEOUT
2016-08-27 10:47:12
1851
原创 RT-Thread系统 hard fault on thread:erx故障分析
最近在跑RT-Thread操作系统,发现系统跑久了出现死机的情况: 初步分析可能造成的原因: 1.网络堆栈、buff分配小了; 2.否是内存越界,一般erx任务是比较简单的; 3.内存泄漏 ,线程申请不到空间; 4.使用memset memcpy 内存操作的时候覆盖额外内存; 5.线程堆栈开的是否太小。 可能的解决办法: 1.检查动态内存分配malloc; 2.查数组,特别是用
2016-07-28 22:37:43
21679
1
原创 初识DASH7
1.1综述 DASH7是基于ISO18000-7标准的开源无线传感器网络通信协议,运行在433MHz,868 MHz和915 MHz ISM频段/ SRD频带射频传输。具有功耗低、通信距离远的特点。标准提供了多年的电池寿命,长达1公里的范围内,用于连接移动的设备延迟低,支持AES 128位共享密钥加密。可运用于楼宇自动化、远程控制、无线计量、家居安防及报警、传感器网络、工业控制和机器人定位。 1
2016-07-12 16:22:27
3944
原创 浅谈LoRaWAN
1.1综述LoRa是一种专用于远距离低功耗的无线通信技术,其调制方式相对于其他通信方式大大增加了通信距离,可广泛应用于各种场合的远距离低速率物联网无线通信领域。比如自动抄表、楼宇自动化设备、无线安防系统、工业监视与控制等。具有体积小、功耗低、传输距离远、抗干扰能力强等特点,可根据实际应用情况对天线增益进行调节。LoRaWAN网络架构是一个典型的星形拓扑结构,在这个网络架构中,LoR...
2016-06-20 21:36:44
22565
原创 Scons构建RT-Thread开发环境
1.下载并安装软件,下载RT-Thread源码。软件和源码可以去对应官网下载,这里不多说了。 python-2.7.11 scons-2.4.1-setup 说明一下,搭建开发环境前需要安装编译器:MDK/IAR/VisualStudio/arm gcc等,根据自己习惯。在window下分别安装完python和scons,基于Scons是Python插件,Scons安装会自动搜索Python的
2016-04-10 11:03:27
4741
原创 STM32 SPI DMA通信
调试STM32 SPI 通过DMA方式主从机通信,主机时钟和mosi信号波形都正常,出现从机接收数据出错的问题。这是因为DMA是直接内存读取数据,如果是主从机上电开始接收数据,数据接收不会出错。如果从机延迟接收数据或者说与主机时钟不同步会造成数据错位。如果谁有更好的办法控制DMA传输开关,可以一起交流学习。 这里只列举主机程序, 使能RCC时钟:/**********************
2016-01-30 14:03:15
5965
原创 STM32 LWIP TCP 以太网调试注意问题
接上篇:STM32 LWIP TCP以太网传输数据电脑IP地址一定要和开发板的IP地址在一个网络内,例如开发板IP是:192.168.1.118,子网掩码:255.255.255.0,默认网关:192.168.1.1。需要断开电脑网络,连接网线,设置电脑IP地址为192.168.1.X(2-254), 子网掩码:255.255.255.0,默认网关:192.16...
2015-12-10 10:24:51
4758
转载 通信协议制定
通信协议定义 用于实现计算机与网络连接之间的标准,网络如果没有统一的通信协议,电脑 之间的信息传递就无法识别。 通信协议是指通信各方事前约定的用心规则,我们可以简单地理解为各计算机之间进行相互会话所使用的共同语言.两台计算机在进行通信时,必须使用的通信协议。通信协议的种类和特点 目前常见的通信协议主要有:NetBEUI、IPX/SPX、NWL
2015-10-29 23:24:00
20162
原创 SimpleBLEPeripheral OAD Profile
SimpleBLEPeripheral OAD Profile1.概述:先对应工程编译准备好BIM.hex和ImageA.hex、ImageB.bin,可用SmartRF Flash Programmer直接烧录BIM.hex和ImageA.hex,先烧录BIM,选择,然后烧录ImageA,选择。再在PC端用BLE Device Monitor或者苹果手机端用TI BL...
2015-09-26 11:39:17
1836
原创 CC2541 OAD无线升级遇到问题总结
最近做BLE CC2541 OAD空中升级,鉴于256K的flash,如果编译代码code大的话,存储空间显得有些力不从心。有的人会采用双CPU工作,主从形式,不过显得有些奢侈。Flash分成三个区:bootloader(BIM)、Image-A、Image-B区。bootloader(BIM)区是固定的不用改,Image-A应该尽量小,这样Image-B才会有足够的升级空间。遇到的问题列一下:
2015-09-03 09:19:48
3413
1
原创 BLE 4.1 协议栈串口DMA模式
蓝牙 BLE BLE-CC254x-1.4.1.43908协议栈串口默认是串口0,RX和TX引脚分别是P0_2和P0_3,硬件板子改板成串口0的Alt2方式,即RX和TX引脚分别是P1_4和P1_5。如图: 需要修改协议栈的部分代码才可以使用串口0 Alt2方式传输数据。 1.Option-c/c++ Compiler Preprocessor-Defined symbols添加宏编译定义
2015-08-24 21:44:42
1624
原创 蓝牙4.0BLE协议栈学习笔记(二)
在学习开发蓝牙协议栈遇到的问题总结: 1.蓝牙设备号BD_ADDR就是MAC地址,不同于uuid,uuid是服务号,作为唯一标识符。 2.scanRspData数组是扫描回应数据数组,用户可以自定义设备名。advertData数组是广播数据数组,主要是包含在广播里的数据信息。 3.主从机通信: 主从机通信具体流程就是 Scanning (搜索) –>Devices Found(发现从机) –
2015-08-16 10:35:31
3197
原创 蓝牙4.0/BLE协议栈学习笔记(一)
蓝牙4.0/BLE协议栈学习笔记(一)需要的软件工具:1、BLE协议栈(BLE-CC254x-1.4.0)2、IAR开发软件(IAR Embedded Workbench8.20.2)注:1.4.0协议栈使用8.20.2的iar版本,1.3.2协议栈等使用的是8.10.4的iar版本。BLE协议栈安装目录下文件夹说明:Accessories一些工具和已经编译好的He...
2015-08-11 22:16:43
10106
原创 BLE CC2541串口调试
不管学习哪款MCU,串口都是最好的调试工具。 使用工具:USB转TTL串口和CC Debugger仿真器。 使用UART0收发送数据接线: USB转TTL串口 BLE CC2541最小模块 GND接GND RXD接P0_3(TX引脚) TXD接P0_2(RX引脚) 3.3V接VCC。 串口初始化函数:/***************************************
2015-07-31 22:14:21
3494
原创 VS2012+opencv-3.0.0环境配置调试几种问题解决
在参考网上VS2012+opencv环境配置文章资料配置好之后,写了一个简单的程序测试看了一下,结果出现 经过反复研究,才发现
2015-07-27 15:06:15
1118
原创 STM32采集频率-外部计数方式
STM32采集频率低频用捕获精度很高,测量高频误差有点大,可能是这种方法我掌握的不够好,决定采用外部计数的方法来测量比较高的频率。我是用一个定时器定时一个定时器计数再根据f=n/t算出频率,这种方法方法原理上是定时时间越长求出的频率越高,但是STM32的定时器是16位的,要考虑到计时溢出的情况。 先从main函数开始介绍:int main(void){ int i;
2015-07-26 09:05:50
19897
8
原创 超宽带UWB高精度定位技术
初次接触超宽带(UWB)无线通信技术,先了解和认识一下。准备做机器人室内定位,没拿到模块之前,先啃英文数据手册,好像还没有中文版本的,做个笔记。定位考虑过ZigBee和BLE,最后还是选择了UWB技术,抗干扰性能更强,定位精度高(±10cm),低成本、低功耗,数据传输速度快,UWB能在10米左右的范围内实现数百Mbit/s至数Gbit/s的数据传输速率,可达到6.8Mb/s。1.背景及...
2015-06-21 09:38:09
27973
9
原创 ZigBee CC2530串口通信调试
刚接触ZigBee,熟悉了一下ZStack协议栈,总算有了点认识。先从调试串口开始,再慢慢开始协议栈代码调试,下面程序已实现发送和接收数据,用的是CC Debugge仿真器和ZigBee最小系统,使用串口还得接个USB转串口设备,我用的是USB转TTL串口,直接贴代码: 包含头文件和系统变量声明部分:#include <ioCC2530.h>#include <string.h>#includ
2015-05-31 18:13:58
11555
5
原创 STM32频率计算——捕获方式
STM32采用定时器捕获的方法测低频信号很准确,我测高频100K-120K就误差太大了,大概200Hz,这儿的误差是个范围,不是某个值。有的人说两个定时器一个定时,一个计数,这样太浪费资源了吧。我项目要采集两个地感线圈的频率,所以用两个定时器捕获,这儿只说一个定时器的方法,用的是定时器3通道2,下面是用捕获的方法计算频率:void Time3_Configuration(){ TIM_
2015-05-23 11:22:40
11946
1
原创 STM32 LWIP TCP以太网传输数据
最近在做以太网数据传输,要把AD采到的数据通过网口发送给上位机(客户端),我采用的是LWIP协议栈,实现了功能。做项目时间紧,也要先看一下LWIP协议栈,TCP ,UDP传输协议。我采用的是TCP协议数据传输,好处是传输可靠。直接贴代码,从main开始,int main(void){ SystemInit();System_Setup(); GpioLed_Init();...
2015-05-21 16:03:07
16936
18
原创 C:if 0 #endif和:#if 1 #endif
在看代码遇到if 0 #endif和:#if 1#endif用法,记一下笔记,以后翻翻。if 0.........#endif这种编译器不编译其中内容,被编译器忽略掉。#if1.........#endif编译器编译其内容,执行代码。这种写法对调试程序,写了老半天发现多余了,简单的代码能实现功能才是上上策,不想删或者以后可能会用到这部分模块代码就#i...
2015-03-31 20:02:11
900
原创 现场升级方案:LPC1788采用U盘方式进行程序IAP升级功能的实现
现场升级方案:LPC1788采用U盘方式进行程序IAP升级功能的实现闲来无事,总结一下前段时间做过的U盘升级项目。一个新手的成长之路在于善于总结,生活也是一样扯远了,我准备了两个软件环境,一个带操作系统(UCOS)的,另一个裸机版的。随后我会附上两个程序代码。U盘升级可以分为两部分代码:U盘读取bin文件和IAP功能两部分。大概说一下实现过程,具体IAP网上都玩坏了。硬件环境:NXP...
2015-03-31 20:02:07
5251
原创 电路设计之电源篇浅谈
在电路设计中涉及到电源部分的设计,关于电源芯片的选型是个很重要的问题。很多人知道用三端稳压集成电路LM7805,因为这种电源芯片用得最多,电路应用范例也成熟。在我设计电路中接触到的电源芯片,下面介绍几种,仅供参考。对于LM7805这种电源芯片设计输入电压要求不是很大,不加滤波电容,都可以稳定输出5V电压,为了电路更好地工作,还是要设计的全面些,这是数据手册提供的典型固定输出电压应用电路参考:...
2015-03-31 20:02:01
4559
原创 Cadence Allegro16.5使用技巧问题总结贴
1.ALLEGRO 自动布线后,为直角调整成45度角走线:Route-Gloss-Parameters-Convertcorner to arc。2.ALLEGRO系统菜单字体太小修改:Setup-User PreferencesEditor-Ui-Fonts-fontsize中Value改大点,默认12改为14就差不多了。3.隐藏覆铜:Setup-User Preferences Edit...
2015-03-31 20:01:58
8145
原创 Ubuntu安装语言包及换软件源
Ubuntu安装语言包及换软件源正常的升级方法是,选择System->Administration->LanguageSupport,系统会自动加载所需语言文件,但是事实下载很慢几个小时或者更多。可以通过换源快速下载软件。从系统菜单中选择System-> Administration ->SoftwareSources。有时候要提示输入用户密码,输入即可...
2015-03-31 20:01:55
3290
原创 Linux编译PMON错误解决
安装之前准备好源码包,如果电脑可以联网,直接输入指令网上下载安装,多省事。在安装源码包时提示错误:No package 'xproto' foundConsider adjusting the PKG_CONFIG_PATH environmevariable if you installed software in a non-standardprefix.Alternati...
2015-03-31 20:01:52
1402
原创 KEIL编译STM32程序出现test.sct(7)…
KEIL编译STM32程序出现test.sct(7): error: L6236E: Nosection matches selector - no section to be FIRST/LAST.其原因很简单,就是没有加载启动代码,其格式是.s形式。加载上就可以了,希望帮到新手。编译之后没有报错。更多技术文章浏览请关注:百家号:https://auth...
2015-03-31 20:01:48
2440
原创 C语言中Uint8_t数据类型分析
C语言中好像没有这种数据类型,但是在实际应用的过程中,发现许多人的代码中都存在这种表示方式。其实uintX-t就是通过typedef定义的,利用预编译和typedef可提高效率也方便代码移植。总结如下:typedefunsigned char uint8_t; //无符号8位数 typedef signed char int8_t;//有符号8位数...
2015-03-31 20:01:45
3869
1
原创 cadence常用快捷键自己总结
orCAD原理图快捷键:shift+鼠标滑轮 原理图左右移动ctrl+鼠标滑轮 原理图上下移动pageup /pagedown原理图上下移动ctrl+pgup/ctrl+pagedown原理图左右移动i 元件放大o 元件缩小ctrl+N/B 复合元件之间切换R 元件旋转CTRL+I 调出滤波器P 放置元件N放置网络标号...
2015-03-31 20:01:42
18679
正在做adc128s022的5路采集,,没有思路谁做过能说说思路或者程序参考一下吗,谢谢
2015-04-21
请教大虾单片机定时5秒长按按键有效进入执行程序否则执行另一程序
2015-02-05
我项目中都用的是UCOS,需求又改了,不要操作系统,怎么把UCOS改成裸机跑
2015-02-03
请教一下,我做的U盘读取文件使用UCOS系统,加载在整个项目的工程中对其他有没有影响,
2015-02-03
NXP单片机写Flash的问题
2015-01-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人