笔记
文章平均质量分 78
百里之外
…
展开
-
OOB配对原理及应用
本文先简单介绍OOB配对的流程,然后结合CC2652蓝牙芯片调试OOB配对原创 2023-05-21 15:51:43 · 3984 阅读 · 1 评论 -
CC26X2获取RSSI方法二-连接事件获取法
本文记录了获取连接事件的对应RF通道的RSSI,可进一步做蓝牙定位原创 2023-04-16 19:03:08 · 386 阅读 · 0 评论 -
CC2642的GGS使用笔记
本文主要记录在CC26XX上建一个蓝牙GATT服务的代码实现原创 2023-04-16 18:06:29 · 989 阅读 · 0 评论 -
SPI+DMA传输性能比较
第一次我是以SPI+DMA驱动LCD显示240X82的图片,可以看出显示该图片在有DMA(加DMA中断)的加持下,耗时156us。第二次是我单独用SPI驱动LCD显示240X82的图片,耗时8685us,所以区别还是蛮大的。本文章仅仅简单记录32单片机的SPI+DMA驱动显示屏的性能测试,这里不花费时间介绍SPI和DMA。这里我定时器计数频率分频到1Mhz,最大计数50000次,也是就计数频率1us,周期50ms。(2)SPI的读写接口(非DMA情况下需要使用到)(3)SPI的DMA配置初始化。原创 2023-02-19 01:27:49 · 3519 阅读 · 0 评论 -
蓝牙协议之GATT学习笔记
学习 蓝牙协议栈的GATT原创 2022-08-28 22:52:58 · 3177 阅读 · 1 评论 -
蓝牙协议栈基础学习笔记
记录蓝牙协议栈的一些基础知识原创 2022-08-28 22:45:20 · 1799 阅读 · 0 评论 -
RT_threadのQSPI总线设备驱动W25Q
本文仅仅记录使用RTT的QSPI总线设备驱动W25Q原创 2022-04-17 22:48:00 · 1612 阅读 · 0 评论 -
RT_threadのSPI设备驱动W25Q/NM25Q128
本篇文章记录利用RTthread的SPI设备来驱动NM25Q,熟悉RTthread的SPI设备。另外对SPI flash(NM25Q/W25Q)不做介绍,仅仅是按照手册上的时序编写代码。NM25Q和W25Q基本上是一样的,只不过是设备厂商ID不一样。本次用的是一颗NM25Q128芯片做实践。1 将NM25Q挂载到SPI总线上/*先定义一个SPI设备对象*/struct rt_spi_device * sp.原创 2022-04-16 14:27:29 · 2879 阅读 · 0 评论 -
RT_threadのSPI设备学习笔记
前言 SPI作为基本的通信协议,广泛应用在嵌入式产品中,它是一种高速、全双工、同步通信总线,目前接触的较多的是SPI、QSPI,Dual SPI暂时没接触到,这里不对SPI总线基础知识做记录,本文仅仅是Rt_thread系统下的SPI设备学习笔记,学习RT_thread中对SPI设备的封装,从其设备驱动层、设备框架驱动层以及应用层入手学习,最终实现使用stm32的SPI驱动LCD显示屏,用Q原创 2022-03-17 22:22:00 · 1827 阅读 · 0 评论 -
Rt_threadのADC设备学习笔记
ADC(Analog to Digital Converter)模数转换器,它的作用是将外界的模拟信号转化为离散数字信号,什么是外界的模拟信号呢?比较好理解,例如温湿度,无线信号的RSSI强度,声光,角度等等。对于一些低端的微控制器,片上只能依靠另外的ADC转换芯片实现模拟信号的采集,对于一些好一点的单片机,基本上都拥有片上ADC资源。ADC的转换一般过程是:取样->保持和量化->数字编码。 本文为RT_thread操作系统下的ADC设备学习笔记原创 2022-03-14 22:39:25 · 7341 阅读 · 0 评论 -
RT_threadの自动初始化机制
目录前言1. 程序的内存分布2.自动初始化机制2.1 自动初始化原理解析2.2 实践测试自动初始化前言 在刚开始学习单片机嵌入式时,我们初始化一些外设资源都是直接在while(1)前面调用外设的初始化函数,这样写虽然可以清楚的看到系统中用到了哪些外设,但是如果外设很多的话,一连续的初始化函数看起来就有点不舒服。而在RT_thread中存在自动初始化机制,它的原理就是用一个函数表,将要初始化的函数指针加入该表中,遍历该表执行每一个初始化函数。本文记录学习RT_thread的自动初始化机制。1. 程序的原创 2022-03-14 20:13:55 · 1844 阅读 · 0 评论 -
RT_threadのUART设备学习笔记
前言串口,做嵌入式都会使用到,那么我们这一节记录学习下rt_thread系统中的UART设备。RT_thread提供下面的I/O设备管理接口来访问串口硬件:函数描述rt_device_find根据串口设备名称查找设备获取设备句柄rt_device_open打开设备rt_device_read读取数据rt_d.原创 2022-03-09 00:33:43 · 1715 阅读 · 0 评论 -
RT_Thread的PIN设备学习笔记
文章目录总结一、pandas是什么?二、使用步骤1.引入库2.读入数据总结总结RT_thread提供了下面的几个函数(PIN设备管理接口)来访问GPIO,如下:函数描述rt_pin_mode()设置引脚模式rt_pin_write()设置引脚电平rt_pin_read()读取引脚电平rt_pin_attach_irq()绑定引脚中断回调函数rt_pin_irq_enable()使能引脚中断rt_pin_detach_irq()脱离引脚中断原创 2022-03-07 22:41:13 · 5669 阅读 · 0 评论 -
RT_threadのIO设备学习笔记
总结:RT_thread有一套I/O设备模型框架,如下图: 图1 I/O设备模型框架 设备驱动通过函数rt_device_register将自己注册到IO设备管理器。应用程序可以使用函数rt_device_find查找设备;使用函数rt_device_open打开设备;使用函数rt_device_read读取设备数据;使用函数rt_device_close关闭设备。 RT_thread的设备模型是建立在内核对象模型基础之上的,每个设备都有继承关系,如图:图2 设备继承关系IO设备内核代码解析原创 2022-03-06 19:45:26 · 1454 阅读 · 0 评论 -
【无标题】
Shell:计算机语义命令解释器(1)开启一个终端:CTR+ALT+T(2)关闭一个终端:ALT+F4(3)shell提示符 #:一般表示你是超级用户,root $:一般表示你是普通用户 怎么切换用户? 答:sudo su 从当前的用户切换为Root用户 su user 从Root用户切换为普通用户,其中的user是安装时候用的用户名 或者直接输入exit,也可以Ctrl+D组合键退出Root用户(4)清除屏幕:Clear 快捷键:CTR+L(5)查看你当前所在位置:PW原创 2022-02-27 22:38:29 · 528 阅读 · 0 评论 -
ARM单片机工程之间的切换
typedef void (*func)();void hw_board_init(void);void Project_Jump(uint32_t addr){ func func_ptr; SysTick->CTRL = 0;// __disable_irq(); for(uint8_t i=0;i<8;i++) { NVIC->ICER[i] = 0xFFFFFFFF; NVIC->ICPR[i] = 0xFFFFFFFF; } __DSB();原创 2022-02-22 23:35:58 · 620 阅读 · 0 评论 -
ATSHA204芯片手册阅读笔记
阅读ATSHA204英文文档过程记录的笔记原创 2022-01-22 18:45:12 · 7589 阅读 · 1 评论 -
W25Q128数据手册阅读总结
W25Q128数据手册总结:1.描述2.引脚封装3.明白引脚的功能4.了解W25Q的内存结构框架5.了解相关寄存器6.了解指令7.了解标准SPI的SPI模式8.了解SPI的dual模式9.了解SPI的QPI模式10.常用的指令1.描述 W25Q128FV串行Flash内存由可编程的65536页组成,每一页256字节。可以在一时间编程高达256字节的内存。擦除内存可以是按16个页擦除(即一个Sector),128个页擦除(八个Sector),256个页擦除(16个Sector),或者整片擦除。标准S..原创 2021-12-21 00:48:38 · 38439 阅读 · 6 评论 -
关于DMA不能工作的原因
ARM芯片中,有TCM和CCM高速内存TCM,Tightly Coupled Memories,是一个固定大小的RAM,紧密地耦合至处理器内核,提供与cache相当的性能,相比于cache的优点是,程序代码可以精确地控制什么函数或代码放在哪儿(RAM里)。当然TCM永远不会被踢出主存储器,因此,他会有一个被用户预设的性能,而不是象cache那样是统计特性的性能提高。TCM对于以下几种情况的代码是非常有用、也是需要的:可预见的实时处理(中断处理)、时间可预见(加密算法)、避免cache分析(加密算法)、或原创 2021-12-08 21:34:52 · 2917 阅读 · 3 评论 -
FATFS函数使用笔记
1.FRESULT f_opendir(DIR *dp,const TCHAR *path);功能:打开一个目录参数功能dp指向空目录对象结构体的指针,用来存储即将打开的目录信息path路径返回值FR_OK(0)表示函数执行成功,目录对象结构体被创建,以供后面的读目录调用。参数dp的结构体类型如下:typedef struct { _FDID obj; /* Object identifier ,里面有个objsize记录打开文件字节大小*/ DWORD原创 2021-09-18 17:28:12 · 1519 阅读 · 0 评论 -
Rtthread之串口初始化流程分析
首先单步调试进入的是rtthread_startup(void)函数,使用函数rt_hw_interrupt_disable(void)失能全局中断,然后进入rt_hw_board_init(void)函数。在该函数中可以看到:#ifdef RT_USING_SERIAL stm32_hw_usart_init();#endif 如果在rtconfig.h文件中定义了RT_USING_SERIAL,则执行硬件串口初始化。下面第一张图是整理了串口设备结构体变量的配置(不是直接将参数赋值给原创 2021-06-26 15:42:43 · 2208 阅读 · 0 评论 -
FSMC之NOR flash控制器学习笔记
一、FSMC基础知识学习FSMC,即灵活的静态存储控制器。先看下面的FSMC框图。从上图可以了解到stm32内核访问FSMC控制器完全是通过AHB总线来实现,同时可以了解到FSMC内部有两个存储控制器,分别是NOR存储器、NAND/PC卡存储控制器,注意两个控制器公用FSMC地址线和数据线,而其中地址线26条,可以访问64MByte的内存,另外数据读写最多支持16位。再来看看下面的内存映射图:上图展示了stm32寻址的1GB内存,这块内存的起始地址是0x60000000,结束地址是0x9FFF原创 2021-06-19 00:12:43 · 2510 阅读 · 0 评论 -
STM32硬件SPI做从设备笔记
void spi2_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);//使能GPIOC时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIOA时钟 RCC_A原创 2021-04-19 01:17:52 · 2475 阅读 · 0 评论 -
软件模拟IIC驱动程序
简介:1.IIC写时序中,主机向从机写入数据后都需要等待应答,保证每次写入成功。2.IIC读时序中,主机接收从机除了最后一个数据不用发送应答之外,其他都需要发送应答。void IIC_Start(void){ SDA_OUT(); //SDA输出 IIC_SDA(1); //SDA_高 IIC_SCL(1); //SCL_低 IIC_Delay(); //延时tSU IIC_SDA(0); //SDA_低 IIC_Delay()原创 2021-02-16 22:05:11 · 1062 阅读 · 4 评论 -
好用的SYSTICK
好用的Systick在core_cm3.h和core_cm4.h头文件里边都有Systick滴答定时器的配置函数。/** * @brief Initialize and start the SysTick counter and its interrupt. * * @param ticks number of ticks between two interrupts * @return 1 = failed, 0 = successful * * Initialise the原创 2021-02-16 12:41:19 · 376 阅读 · 1 评论 -
STM32时钟树总结和时钟配置
总结STM32时钟树和时钟配置预习:(1)5到6个时钟源,HSI、HSE、LSI、LSE、MSI、PLL(细分为主PLL、PLLI2S和PLLSAI)。(2)LSI频率为32KHz左右,仅供看门狗和RTC使用。(3)LSE频率为32.768KHz,作为RTC的时钟源。(4)HSE:OSC_OUT和OSC_IN引脚接4~26MHz的晶振。(5)HSI是高速内部RC振荡器,频率16MHz。(6)MSI(暂时看到它出现在低功耗单片机里),时钟信号由内部RC振荡器产生。其频率范围可以由时钟控制寄存器(原创 2021-02-16 00:07:57 · 2136 阅读 · 0 评论 -
自学Matlab基础语言笔记
1.Matlab的变量命名规则:变量的名称是由一个字母开头,后面可以是字母、下划线、数字。2.变量的初始化有三种方法:采用赋值语句初始化变量;用input函数从键盘输入数值;最后一个是matlab已经定义好的一些常量。用input函数的时候注意打印的消息要用英文单引号括起来,不像C语言的printf函数,比如:>>R = input('please input a data:...原创 2020-01-19 23:55:18 · 6257 阅读 · 0 评论