![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式
文章平均质量分 85
dahailinan
这个作者很懒,什么都没留下…
展开
-
智能笔算法总结
智能笔算法总结 一周前,我在CocoaChina和博客园的问答区都提了一个问题,就是本篇文章将要描述的“智能笔问题”。遗憾的是,至今没有朋友给予有效地回复,但是,还是感谢回复我的朋友们。经过一周的琢磨和研究,终于在昨天搞定了这个问题。看着上图,回想自己渴求帮助的心情,想必有的朋友还是需要这样的算法的,再者在此也做一个总结,所以记录一下,互相学习指正。首先描述下这个功能的需求:在平板上,用手指自由地一笔画出一个图形,然后智能识别用户所画图形的类型,比如直线、圆、三...转载 2021-11-11 10:57:27 · 234 阅读 · 0 评论 -
常用排序算法总结(二)
目录计数排序 基数排序 桶排序 上一篇文章中我们总结了常用的比较排序算法,主要有冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 这篇文章中我们来探讨一下常用的非比较排序算法:计数排序,基数排序,桶排序。在一定条件下,它们的时间复杂度可以达到O(n)。 这里我们用到的唯一数据结构就是数组,当然我们也可以利用链表来实现下述算法。 计数排序(Counting Sort) 计数排序用到一个额外的计数数组C,根据数组C来将原数组A中的元素排到正...转载 2020-11-11 10:56:18 · 86 阅读 · 0 评论 -
常用排序算法总结(一)
目录冒泡排序 鸡尾酒排序 选择排序 插入排序 二分插入排序 希尔排序 归并排序 堆排序 快速排序 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时间复杂度可以达到O(n),主要有:计数排序,基数排序,桶排序等。 这.转载 2020-11-11 10:54:25 · 307 阅读 · 0 评论 -
音频常见问题总结
音频文件在播放时出现断断续续或类似“爆破”(Pop-Click)杂音的现象,称之为 Xrun(可以是 underrun,也可以是 overrun)。【原因】 通常来说,出现 Xrun 问题时原因可能是以下几个之一: (1) Linux CFS 调度器导致。因为 CFS 调度器的“公平调度”是较长一段时间的平均表现,在很短的一个窗口时间段内,CFS 也可能会将 CPU 时间片完全分配给一个 nice 值更高的线程而不顾及另一个 nice 值更低的线程。如果这个低 nice 值的线程恰好...原创 2020-10-17 10:46:07 · 8547 阅读 · 1 评论 -
单片机低功耗
出处:http://www.amobbs.com/thread-4932393-1-1.html不知从什么时候开始,随便做个什么电子产品,至少是电池供电的,都要求低功耗特性了。好在市面上随便什么芯片都敢在自己的数据手册的第一页赫然写着低功耗。究竟怎样算低功耗?小于5mA?小于1ms?小于100uA?离开了应用场合,似乎数值也失去了单纯的意义,总之越小越好。但感觉上,能用水果点亮的应用应该就是低功耗了吧。 认真说来,有点怀念当年随便一个应用500mA,芯片微微发烫,用手一摸只要还能放...转载 2020-10-12 17:57:08 · 2735 阅读 · 0 评论 -
IIC总线协议详解
1 I2C总线物理拓扑结构I2C 总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。I2C通信方式为半双工,只有一根SDA线,同一时间只可以单向通信,485也为半双工,SPI和uart为双工。2 I2C总线特征 I2C总线上的每一个设备都可以作为主设备或者从设备,...转载 2020-10-07 11:14:59 · 781 阅读 · 0 评论 -
ANC主动降噪理论及Matlab代码实现
根据系统是否有参考信号传感器可将ANC系统大致的分为前馈型和反馈型。前馈控制是产生次级噪声之前就通过传感器测量初级噪声的频率以获取参考信号。反馈控制不需要测得参考信号就产生次级噪声进行相消干涉反馈型ANC系统 反馈型 ANC 系统中没有传感器来测得参考输入信号,仅通过误差传感器获取经相消干涉后的残余噪声并将其送入到反馈控制器,进而达到调节次级声源ynyn的目的,使其发出与初级噪声幅值相等相位相反的次级噪声 反馈型ANC系统避免了对初级噪声的提取,也就不存在FM问题,反馈系统因具有一转载 2020-09-16 19:54:41 · 7835 阅读 · 2 评论 -
TWS蓝牙耳机
1. TWS 耳机概述TWS - True Wireless Stereo,即真正无线立体声。从技术上来说是指手机通过连接主耳机,再由主耳机通过蓝牙无线方式连接从耳机,实现真正的蓝牙左右声道无线分离使用。1.1 爆发原因手机取消 3.5mm 耳机插头,有线耳机需配转接线、缠绕等问题。1.2 TWS耳机优缺点优势真无线结构,完全摒弃了有线烦恼 一机能当做两机用劣势关键问题在于蓝牙传输方案不够成熟,存在以下问题:传输稳定性差,容易受到外界干扰 主副耳机信号不同步 音质差转载 2020-09-14 14:01:23 · 1439 阅读 · 1 评论 -
BES2300Z开发真无线蓝牙降噪TWS+ANC耳机之主从通讯
使用BES2300Z开发TWS,实现左右耳之间通讯,方法如下:1. 在app_tws_cmd_handler.h的APP_TWS_CMD_CODE_E中添加命令ID,比如:APP_TWS_CMD_TWS_POWER_OFF。2. 在app_tws_ui.cpp中添加如下代码:static void app_tws_cmd_tws_power_off_handler(uint8_t *ptrParam, uint32_t paramLen)//TWS接收CMD处理{ ;添加代码}TWS_转载 2020-09-14 13:47:44 · 1328 阅读 · 0 评论 -
TWS 蓝牙耳机 ANC 调试步骤
因为公司的声学说这些不是他们的工作,非得让软件来,所以自己摸索了2天,总结了下,非专业,希望错的地方指出来。ANC 调试步骤:环境是消音室,测试平台的搭建如上图:前馈耳机头:MIC:对于前馈耳机头的 mic 的选择,芯片对于硅麦(MEMS)和驻极体麦克风(ECM)都是支持的,外围电路有差异,从调试的角度考虑硅麦和电容 mic 都可以,没有本质区别,ECM 在信噪比方面要优于 MEMS,但从生产的角度考虑,硅麦一致性更好。而前馈的降噪的生产对一致性要求非常高。所以前馈的降噪方式推荐硅麦,尤其是入耳原创 2020-09-02 10:28:48 · 5672 阅读 · 0 评论 -
同步 异步 阻塞 非阻塞 区别
https://www.cnblogs.com/Anker/p/5965654.html1、前言 前一段时间出去面试,被问到同步、异步与阻塞、非阻塞的区别。我一时半会没有想出来,作为一个工作三年的人来说,实在很惭愧。我当时理解同步、异步属于两个进程中间的协作关系,例如使用浏览器访问一个网站,需要多次请求服务端,才能加载完整个页面的内容。同步的操作如下:浏览器首先发送第一个请求,等待服务器回复后,再发送第二个请求,依次类推,直到所有请求完成。异步的操作如下:浏览器发送第一个请求,可以不用等待服.转载 2020-09-01 14:50:27 · 125 阅读 · 0 评论 -
Linux内核中各种同步机制
原子操作 原子操作是由编译器来保证的,保证一个线程对数据的操作不会被其他线程打断。 自旋锁 原子操作只能用于临界区只有一个变量的情况,实际应用中,临界区的情况要复杂的多。对于复杂的临界区,Linux 内核提供了多种方法,自旋锁就是其一。自旋锁的特点就是当一个线程获取了锁之后,其他试图获取这个锁的线程一直在循环等待获取这个锁,直至锁重新可用。由于线程一直在循环获取这个锁,所以会造成 CPU 处理时间的浪费,因此最好将自旋锁用于很快能处理完的临界区。自旋锁使用时两点注意:自旋...转载 2020-09-01 11:20:00 · 197 阅读 · 0 评论 -
Keil MDK 4.23 仿真 STM32F4 配置总结与简单解析
这里的仿真是指电脑仿真,而不是在线仿真。最近刚刚入门STM32F4系列,在MDK仿真问题上卡住了一段时间。查帖子,有的人说4.23不可以但高版本可以,有的人说高版本也不行,也有的人说4.23就能仿真。我这里用的是MDK4.23实现STM32F407VET6的电脑仿真,不过其他型号STM32F4芯片、更高版本MDK应该也可以。下面就从一个简单工程开始说明配置过程,图多也略繁琐,建议高手跳着看。...转载 2018-07-24 17:13:40 · 11458 阅读 · 5 评论 -
BLE-NRF51822教程15-BLE地址
51822的 BLE的设备地址 可以通过如下函数函数来获得地址的设置可以调用如下函数设置。官方的demo工程中,都是没有主动调用过 sd_ble_gap_address_set函数来设置设备地址的。所以 demo工程中使用的都是默认地址。这个默认地址就是 芯片出厂是设置的,出厂时烧写在FICR寄存器中的。所以蓝牙芯片启动后,如果你没有主动调用 sd_ble_gap_ad...转载 2018-07-17 09:29:47 · 498 阅读 · 0 评论 -
BLE-NRF51822教程14-adc和电池电量服务
51822的adc 模块图如下所示:51822ADC有8个通道。AIN0-AIN7.这几个通道对应的引脚是固定的。可以在 51822的产品说明书中找到。通过CONFIG寄存器 选择哪一个通道作为ADC的输入。如上图,ADC不仅可以测量8个通道的输入进过比例转换后的模拟电压(比如选择1/3,则实际adc转换的数据为外部输入电压的1/3),还可以测量 VDD/3 和VDD*2/3的电压...转载 2018-07-17 09:26:46 · 926 阅读 · 0 评论 -
BLE-NRF51822教程13-连接时触发配对
最近答疑碰到几次都提到 需要实现手机每次连接上设备后,立刻出发配对并要求输入密钥的功能。 这里就单独写一个教程供大家参考下。 配对的目的是为了对链路进行加密。以提高蓝牙的传输安全。关于配对的一些相关知识在 静态密码/动态随机密码教程中有一些介绍。对于使用来说,理解一下配对相关流程就行了。 这里额外说个问道比较多的配对和绑定区别的问题:关于配对和绑定,一些人可能一直分不清楚他...转载 2018-07-17 09:23:07 · 512 阅读 · 1 评论 -
BLE-NRF51822教程1-常用概念
1:主机如何知道外围设备的存在: 外围设备广播信息。主机主动扫描,外围设备回复扫描响应以告知主机。2:可发现模式:由广播中的flag标志设置。 有限可发现模式:广播间隔快,但最大只能持续最多30s 通用可发现模式:广播间隔相对较慢,广播没有最大还需时间限制。3:广播通道:BLE中有3个广播信道和37个数据信道。每次广播间隔...转载 2018-07-16 16:49:07 · 510 阅读 · 0 评论 -
BLE-NRF51822教程2-工程初始化流程
代码讲解基于资料包里配套的 sdk5.1版本中的串口demo。高版本的sdk基本都是差不多的。代码在路径xxxxx\keil\ARM\Device\Nordic\nrf51822\Board\pca10001\s110\experimental中一:main函数整体注释:int main(void){//初始化LED指示灯,用来指示广播和连接状态leds_init();...转载 2018-07-16 16:50:13 · 768 阅读 · 0 评论 -
BLE-NRF51822教程3-sdk程序框架剖析
本讲为框架介绍,不会牵涉到太多代码细节。 51822的官方SDK其实是没有框架依耐性的。什么叫框架,比如TI的BLE SDK中就有一个操作系统抽象层(OSAL)他是一个轮训的调度。你需要按照他的方式去创建任务等等。而51822的SDK本质上只是提供了各种调用接口,比如开启初始化协议栈,初始化一些硬件功能模块,开始广播,发起链接等等。这些接口怎么用完全取决于自己。不过一般固件开发都是一些...转载 2018-07-16 16:52:27 · 292 阅读 · 0 评论 -
BLE-NRF51822教程4-串口BLE解析
本讲逐行代码解析官方串口BLE例程demoPS: 基于SDK5.1 主要分一下几个部分:1 :Main函数的整体注释2 :函数单独解析。3 :接收串口数据并发送给对端设备4 :接收手机数据并通过串口打印 Ps :第一和第二部分我在教程工程初始化流程中已经详细说明这里直接复制过来,做了一些修改以及添加了关于添加服务和添加特征值的讲解,如果之前看过可以直接看下 2函...转载 2018-07-16 16:56:31 · 398 阅读 · 0 评论 -
BLE-NRF51822教程5-静态密码设置
这一讲介绍配对的一些相关理论知识,并且介绍如何实现”静态密码”的设定程序是基于sdk9.0 下的 uart demo另外 测试使用的手机app是 IOS下的lightblue。 这里准确的说法应该是叫配对码,而不是密码。输入这个这个配对码是配对过程中可选的一部分 介绍如何设置静态密码前先介绍一下配对的相关知识(后面都直接叫密码,而不是配对码) 起初未提供安全性的两个...转载 2018-07-16 16:57:45 · 309 阅读 · 0 评论 -
BLE-NRF51822教程6-创建一个自己的服务
该教程基于 sdk9.0首先打开 sdk 下的工程模板 在以下路径中XXXX \Keil_v5 \ARM \Pack \NordicSemiconductor \nRF_Examples \9.0.0 \ble_peri pheral \ble_app_template \pca10028 \s110 \arm5打开工程后,可以发现该模板的框架和 一般工程例子基本是一样的。区别 就是有一些函...转载 2018-07-16 16:58:29 · 189 阅读 · 0 评论 -
BLE-NRF51822教程7-带协议栈工程中使用flash
本教程说明 如何在带协议栈的BLE工程中使用flash操作。教程基于sdk9.0的 uart工程xxx\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_uartNordic的SDK将flash操作封装成了一个pstorage模块。 模块提供了很好用的flash操作接口。 使用flash前需要调用 pst...转载 2018-07-16 16:59:32 · 177 阅读 · 0 评论 -
BLE-NRF51822教程8-软件定时器的使用
本讲教程还是会基于 9.0 sdk中的uart例子。 在该例子上使用 sdk中自带的软件定时器来实现一些功能Uart例子在sdk 中如下目录XXX\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_uart 首先 了解一下相关API Sdk中的app time...转载 2018-07-16 17:00:26 · 972 阅读 · 0 评论 -
BLE-NRF51822教程8-动态广播
本讲接收如何实现动态广播。教程基于 9.0 sdk中的 Uart例子。 实现动态广播的方法是 广播->停止广播->修改参数->重启广播 所以我们通过一个定时器来周期性的 关闭广播然后再修改广播数据之后再开启广播。 Sdk 9.0中的广播搞了好几个模式,做的有点麻烦,所以我对他做了比较大的改动。首先 在main.c中 中的advertising_...转载 2018-07-16 17:01:49 · 281 阅读 · 0 评论 -
BLE-NRF51822教程9—动态密码(配对码)
本讲教程也是在 sdk中的的uart例子 的基础上修改实现动态密码(其实是配对码)的功能。Uart例子在以下目录中XXX\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_uart 关于配对的一些理论知识在静态密码教程中有介绍。这里就不再赘述。 因为是动态密码,板子上没有...转载 2018-07-17 09:16:50 · 543 阅读 · 0 评论 -
BLE-NRF51822教程10-手机动态修改设备名
该教程讲解如何实现用手机来动态修改设备名,达到手机连接设备后修改设备名称,然后断开连接再扫描能够看到新的设备名。 教程基于sdk9.0 下的uartdemo,如下目录中xxx\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_uart Nordic的协议栈实现中默认都会有一个...转载 2018-07-17 09:18:30 · 315 阅读 · 0 评论 -
BLE-NRF51822教程11-使用app_scheduler
该讲介绍sdk中 app_scheduler的使用。 看名字容易理解成是一个调度模块。不过这个模块的作用并不是用来调度程序的。其内部实现就是一个简单的队列,你将 一些数据和其对应的处理函数 放入队列。然后在另一个地方会 取出这些数据并调用对应的处理函数 。 这个模块的核心作用就是用来将 中断上下文中的 处理过程转移的main上下文中。 以避免中断处理过程太长导致可能丢失...转载 2018-07-17 09:21:21 · 2467 阅读 · 0 评论 -
BLE-NRF51822教程12-sdk中按键功能的使用
这一讲介绍一下sdk9.0中如何使用按键模块来实现自定义的按键功能。 关于sdk5.1中如何使用按键。在教程 剖析心率demo 教程中有关于按键的注册和按键事件发生后会如何回调自己注册的回调函数详细说明。 本讲教程也是在 sdk中的的uart例子 的基础上修改实现按键功能。Uart例子在以下目录中XXX\Keil_v5\ARM\Pack\NordicSemiconductor\...转载 2018-07-17 09:22:06 · 319 阅读 · 0 评论 -
STM32的优先级NVIC_PriorityGroupConfig的理解及其使用
写作原由:因为之前有对stm32 优先级做过研究,但是没时间把整理的东西发表,最近项目需要2个串口,但是不是两个串口同时使用,只是随机使用其中一个,程序对2个串口的优先级需要配置;此文思路:“中断优先级”思维导图-->关键要点--->结合图和要点相关程序应用例程讲解;我们先来看ST公司的一张图:我自己依据此图理解,应用思维导图画了一张方便理解:(如果看不清可通过ctrl+鼠标滑轮 ...转载 2018-06-14 15:42:11 · 33040 阅读 · 7 评论