- 博客(68)
- 资源 (37)
- 收藏
- 关注
原创 ESP8266/ESP32 SDK3 OTA升级
1、本示例适合于ESP8266和ESP32的OTA升级,使用官方的RTOS SDK3的框架编程,用户只要给出URL,代码自动解析出域名、IP、端口、文件路径等信息,然后通过HTTP请求下载固件。2、本人测试固件放到阿里云对象存储OSS中,...
2021-11-12 10:40:36
1020
原创 阿里云对象存储上传文件
1、登录阿里云官网阿里云-上云就上阿里云2、点击产品,找到对象存储OSS,点击进去3、如果首次使用,下面可能显示立即购买或者折扣套餐,点击进去购买。如果已经购买,则跳到第5步4、使用默认选项即可,购买时长根据个人情况选择,半年只需要4.98元,点击立即购买5、购买成功之后,在对象存储主页,点击进入管理控制台6、在Bucket 列表,点击创建Bucket如果弹出以下对话框,点击不开通输入Bucket名称、选择地域读写权限选择公共读,点击确...
2021-11-12 10:22:57
1141
原创 FreeRTOS可变数据长度的队列
背景:使用xQueueCreate创建队列时,我们发现只有两个参数,队列深度和单元长度,单元长度为该队列每组数据的最大长度,由于实际应用中,可能每个消息的数据长度都一样了,因此都设同样的长度会造成内存浪费。方案:我们把消息数据打包成结构体,然后传入该结构体的指针到队列,接收到该指针时转换为结构体,最终获取实际的数据。1、定义队列变量和队列结构体类型xQueueHandle test_queue; //队列变量typedef struct{ uint8_t len; //数据
2021-08-26 09:40:40
3057
2
原创 ESP8266 TCP客户端代码(自动连接,断开识别)
user_socket.c#include "user_socket.h"//===================================================================// 变量定义//===================================================================int tcp_fd = -1;/************************************
2021-08-20 14:50:13
2641
原创 腾讯云动态注册设备
产品接入腾讯连连微信小程序时,每个设备在使用前需要先在云端注册,注册成功之后,会生成一个设备秘钥,需要把这个秘钥写入到产品的FLASH里面。注册设备的方法:1、手动注册 在云端的产品里面,点击设备调试、新建设备、输入设备名称、点击保存设备注册成功之后,在设备调试页面会显示设备列表,点击对应的设备进入设备详情页面在设备信息里面可以看到设备秘钥,需要把这个设备秘钥和设备名称写入到产品里面2、动态注册 手动注册效率太低,不利于批量生产,因此需要动态注册...
2021-07-22 17:41:05
986
原创 腾讯连连H5面板开发
一、开发环境搭建安装node.js,可以按照下面链接教程安装 https://www.cnblogs.com/aizai846/p/11441693.html二、开始 参考腾讯官方文档https://cloud.tencent.com/document/product/1081/49028#h5-dev-local1、按照腾讯教程提供的链接下载H5面板的SDK,解压到自己的开发目录下 https:...
2021-07-05 15:47:51
2441
3
原创 TM7711高精度厨房秤滤波算法
AD芯片采样TM7711,该芯片支持24位的AD转换,我们做0.1g的厨房秤,所以至少使用21~22位才行,21位时0.1g对应7.5个内码左右,22位时0.1g对应15个内码左右。这里我们使用22位的AD。22位原始的AD信号,重量没有变化时大概跳动50个内码左右,相当于有0.33g的跳动,所以需要我们通过软件滤波消除跳动。以下链接是c语言的滤波算法,滤波之后内码跳动小于5,不影响重量的实时性。https://download.csdn.net/download/dear_Wally/1.
2021-05-22 10:45:24
18689
10
原创 2.4G芯片做蓝牙广播发送数据(伪蓝牙)
伪蓝牙LE(Faking Bluetooth LE)Bluetooth LE是蓝牙4.0规范中引入的一项新技术。 除了名称外,它与蓝牙完全无关。它是为低功耗而设计的,设计表明了这一点。它不像真正的蓝牙那样,会按照精确的时间表进行跳频,而不管任何事情,LE都会在发送一定数量的数据包后进行跳频,因此无需唤醒即可保持运行时钟来知道下一跳的位置。实际上,LE允许设备在保持连接的同时,长时间完全关闭其无线电。这对于键盘和鼠标以及所有其他类似的东西来说非常棒。LE的另一个很酷的特性是,设备可以主动发送小块数据的广播
2020-06-17 10:32:38
7582
4
原创 单片机IO管脚模拟I2C从机通信
1、思路:需要使用SDA管脚下降沿中断,通过I2C的通信协议可知,主机发送开始信号时,会先把SDA管脚拉低,所以从机在SDA下降沿会进入中断,然后做相关的操作。2、优点:可以让没有硬件I2C的单片机通过此方式模拟通信;实测从机收发数据正常,无丢包现象;90%的代码都注释,避免初学者看不明白。3、缺点:由于是模拟的方式,所以主机的速度不能太快,否则单片机处理不过来;SDA管脚的中断优先级尽量调到最高,避免接收数据时进入其它中断,导致丢包;接收过程在中断里面处理,所以占用中断的时间受传输速度和数据长..
2020-05-28 15:20:42
6771
1
原创 DA14580 空中升级(SUOTA)
一、需要用到的资料和软件Python 3.5 、SmartSnippets_Studio 、DA1458x_SDK_5.x.x.zip 、DA1458x_SUOTA_Multipart_Binary_Generator.zip 、SUOTA.apk 。1、Python 3.5 可以到www.python.org.官网下载,点download中的windows选择
2020-05-01 14:23:13
1053
原创 DA14580发现服务
1、发现服务是在与从机建立连接成功后进行的,DA14580建立成功后会调用user_on_connection( )函数。里面有个使能配置文件函数app_prf_enable( ),这个函数最终会调用user_sps_enable()。void user_sps_enable(uint16_t conhdl){ struct sps_client_enable_req * req
2020-05-01 14:22:45
423
原创 DA14580睡眠
睡眠流程 1、主函数在schedule_while_ble_on中处理所有的内核挂起事件。do { schedule_while_ble_on();}while (app_asynch_proc() != GOTO_SLEEP); 2、所有的内核挂起事件都处理完成后,调用rwip_power_down获取它的睡眠模式,判断它进入哪种睡眠模式,或者不睡眠。sleep_mod...
2020-05-01 14:22:17
415
原创 DA14580配对
使用官方的ble_app_profile工程来配置安全配对。1、在文件da1458x_config_basic.h, 定义CFG_APP_SECURITY #define CFG_APP_SECURITY2、在文件user_config.h,把 static const struct security_configuration user_security_conf注释掉。//stati...
2020-05-01 14:22:01
861
原创 DA14580外设篇之GPIO
1、封装管脚根据DA14580的datasheet可以知,DA14580有三种封装WLCSP34、QFN40、QFN48 WLCSP34:一共34个管脚,14个IO管脚(P0_0~P0_7,P1_0~P1_5)QFN40 :一共40个管脚,24个IO管脚(P0_0~P0_7,P1_0~P1_5,P2_0~P2_9)QFN48 :一共48个管脚,32个IO管脚(P0_0~P0_7,P...
2020-05-01 14:21:45
751
原创 DA14580外设篇之GPIO中断
1、GPIO中断描述DA14580的GPIO中断有6个,1个键盘接口中断(KBRD)、5个独立中断线(IRQ0~IRQ4)。1.1、IRQ0~IRQ4中断线 一共有5组独立的中断线,每组中断线支持所有的IO管脚配置为中断输入源,一个中断线只能配置1个IO管脚,一个IO管脚可以配置多个中断线。因此最大只能配置5个管脚的独立中断。(每个中断线的消抖时间是共用的)1.2、KBRD键盘接口...
2020-05-01 14:21:25
891
原创 DA14580外设篇之定时器和PWM
1、定时器描述DA14580有软件定时器和内核定时器,软件定时器属于DA14580的外设,一共有2个Timer0、Timer2。内核定时器属于BLE的,这里只介绍软件定时器Timer0和Timer2。1.1、Timer0Timer0是一款具有PWM输出功能的16位通用定时器。 Timer0可以编程为产生周期性中断(SWTIM)。Timer0可以输出2组PWM(PWM0、PW...
2020-05-01 14:21:04
934
原创 DA14580睡眠配置
我们使用官方的ble_app_profile工程配置睡眠模式,睡眠模式使用扩展睡眠。项目功能:上电广播10s,然后进入睡眠。按下按键唤醒,广播10s,然后进入睡眠,以此循环。1、打开文件user_config.h,将app_default_sleep_mode 赋值为 ARCH_EXT_SLEEP_ONconst static sleep_state_t app_default_slee...
2020-05-01 14:20:00
1032
1
原创 DA14580管脚唤醒配置
1、DA14580的所有GPIO管脚都可以配置睡眠唤醒。2、寄存器WKUP_CTRL_REG 位 符号 描述 15:14 Reserved 7 WKUP_ENABLE_IRQ 使能唤醒中断(1:使能 0:禁止) 如果事件计数器的值与WKUP_COMPARE_REG的值相等,则触发中断(WKUP_QUADEC_IR...
2020-05-01 14:19:11
566
原创 DA14580_启动文件讲解
1 、启动文件简介DA14580的启动文件为boot_vectors.s,启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作:1.1、初始化堆栈指针 SP =__initial_sp1.2、初始化PC指针 =Reset_Handler1.3、初始化中断向量表1.4、配置系统时钟1.5、调用C库函数_main初始化用户堆栈,从而最终调用main函数去到C的世界...
2018-05-15 10:17:24
1660
原创 DA14580用KEIL查看寄存器的值
1、打开Memory窗口Memory窗口如下可以在里面输入要查看的寄存器地址,寄存器的地址可以在datasheet里面查看比如我们输入0x5000140C,按回车。由于DA14580是16位的寄存器,所以前2个Byte就是它的数据,低位在前,高位在后。也可以直接拖动SDK已经定义好的地址,到Memory窗口。...
2018-04-08 09:06:11
1513
原创 Android去掉窗口标题栏、状态栏
Android手机的最顶部为状态栏,状态栏下面是标题栏。1、去掉标题栏: a、在代码中实现:(一定要写在setContentView()前面) requestWindowFeature(Window.FEATURE_NO_TITLE); b、在AndroidManifest.xml中实现: 注册Activity时加上如下的一句配置就可以实现。 ...
2018-04-02 10:42:54
823
1
原创 LinearLayout
LinearLayout线性布局是按照垂直或水平的方式进行排布的。默认是按照垂直进行排布。orientation用来指定当前线性布局的排布方向。水平horizontal、垂直verticalwrap_content 包裹内容match_parent 匹配父类margin 表示控件距离其他控件或者屏幕边缘的间距。-------外边距 pading 表示控件的内部内容距离...
2018-03-24 23:07:43
547
原创 AD10检查规则
检查PCB有没有开路或短路:1、工具->设计规则检查->运行DRC,(之后可能会弹出错误的窗口,直接关闭即可)2、点击右下角的PCB -> PCB Rules And Violations,之后再列表框里可以选择要查看的类型,Short-Circuit Constraint(查看有没有短路)、Un-Routed Net Constraint(查看有没有开路的网络),双击对应的可以...
2018-03-17 15:30:22
14430
原创 为什么580在升压模式下不能与RCX一起运行,必须使用XTAL32?
DA14580的电源有两种接法,一种是升压型(0.9~2.0V输入),另一种是降压型(2.35~3.3V输入)。降压型:升压型:当处于升压模式时,DA14580不能在没有外部XTAL 32KHz的情况下工作,原因是当在升压模式下工作并进入睡眠状态时,dcdc转换器关闭,这意味着RCX将在不同的电源下工作(工作时为dcdc,睡眠时为电池供电),这将导致RCX振荡器漂移。官方解释:DA14580需要1...
2018-03-14 11:48:50
506
原创 DA14580睡眠唤醒时不调用app_wakeup_cb
1、按键唤醒后可以执行app_button_press_cb函数,并且调用app_easy_wakeup();以及最后能执行ke_msg_send_basic(wakeup_id, TASK_APP, 0);但是却没有回调app_easy_wakeup函数。解决:在user_modules_config.h文件中,将EXCLUDE_DLG_MSG定义并设置为0, ...
2018-03-14 09:05:05
1170
原创 DA14580做主机
一、主机通讯过程包括:扫描、发出连接请求、建立连接、发现服务、交换数据。1、扫描过程:应用层将GAPM_START_SCAN_CMD消息发送到堆栈,设备将开始扫描过程,并报告当前正在进行广播的所有可用设备。广播事件将被报告给.app_on_adv_report_ind指针指向的函数,即user_on_adv_report_ind( )函数。在user_on_adv_report
2018-02-03 17:21:16
1916
4
原创 矩阵按键原理和BUG
当我们的电路有很多按键时,一般会采用矩阵方式与单片机相连来减少对单片机IO的浪费,如下图方式。 这个电路的原理: 1、比如检测S13是否按下,单片机把Line4设为输出,并输出低电平,而Line3、Line2、Line1设为开路输入,或输出高电平,反正只要这三个脚不为低电平就行了。 2、设Row1、Row2、Row3、Row4为输入脚,单片机去读Row1、Row2、Row3、
2017-02-27 14:42:12
5720
转载 STM32F10xxx启动模式分析 – 梦想照旧
STM32的启动模式:STM32有三种启动模式,对应的存储介质均是芯片内置的: 1. User Flash Memory(Main Memory) = 芯片内置的Flash,用户程序存放在其中,这是正常的工作模式。一般情况下,都是选择这种启动方式。1. User Flash Memory(Main Memory) = 芯片内置的Flash,用户程序存放在
2016-12-15 19:39:58
1768
腾讯云动态注册设备.zip
2021-07-22
F1C100s_with_Keil_RTX4_emWin5-spl-separated.zip
2020-08-11
nrf52832-nimble 代码分析流程图.pdf
2023-07-02
CC2642 OAD文件合成工具.rar
2022-09-21
S32K1xx printf打印函数,支持错误、警告、信息等打印,支持颜色打印,数组字符打印
2022-06-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人