自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 BLE UUID

1.1 UUID"GATT层”中定义的所有属性都有一个UUID值, UUID是全球唯一的128位的号码, 它用来识别不同的特性。1.2 蓝牙技术联盟UUID蓝牙核心规范制定了两种不同的UUID,一种是基本的UUID, -种是代替基本UUID的16位UUID。所有的蓝牙技术联盟定义UUID共用了一个基本的UUID:0x0000xxxx-0000-1000-8000-00805F9B34FB为了进一步简化基本UUID, 每一个蓝牙技术联盟定义的属性有一个唯-的16位UUID,以代替.上面的基本UUI

2020-09-04 11:36:54 298

原创 ble协议栈

1.功能框图Nordic Nrf52系列芯片的协议栈结构图:2.协议栈结构有LL层(链路管理)、HCI(主机控制器接口)、L2CAP(逻辑链路通道适配协议)、ATT(属性)、SM(安全管理)、GATT(通用属性)、GAP(通用可访问规范)2.1 底层:ControllerPhysical Layer, 物理层 简称:PHY用来指定BLE所用的无线频段、调制解调方法等,PHY直接影响...

2020-04-16 20:19:40 607

原创 ble广播基础

1.BLE工作流程1.1 角色主机:发起对从机的连接者(如手机)从机:广播并等待连接(手环等设备)观察者:监听空中广播事件,和主机唯一的区别是不能发起连接,只能持续扫描从机。广播站:可以持续广播,和从机唯一区别是不能被连接,只能广播数据BLE协议栈中没有角色限制,同一设备可以作为主从一体。1.2 广播指每一段时间发送一次广播数据,当从机处以广播状态时才能被主机发现,广播包会在37 ...

2020-04-16 10:09:18 2380

原创 uart

123

2020-03-20 18:50:03 353

原创 UCOSIII 同时等待多个内核对象

一、相关理论1、UCOSIII只支持同时等待多个信号量和消息队列,不支持同时等待多个事件标志组和互斥信号量。2、当等待到任意一个的时候可以该任务就会进入就绪状态。二、相关API函数1、OS_PEND_DATA数组OS_PEND_DATA pend_muli[3]; pend_muli[0].PendObjPtr= (OS_PEND_OBJ*)&MY_SEM; pend_mul...

2018-12-01 21:00:14 438

原创 UCOSIII事件标志组

一、理论部分1、有时一个任务需要和多个事件同步,此时可以用事件标志组。2、事件标志组的事件可以“与”同步,也可以“或”同步。3、任务和 ISR(中断服务程序)都可以发布事件标志,但是,只有任务可以创建、删除事件标志组以及取消其他任务对事件标志组的等待。4、如果任务在等待过程中时间超时,任务会被重新进入就绪态。二、相关API函数1、定义事件组OS_FLAG_GRP EventFlag...

2018-11-27 22:34:04 859

原创 UCOSIII 内建消息队列

一、相关理论1、如同信号量一样,UCOSIII也可以任务内建消息队列,不仅简化了程序,还提升了效率。2、使用消息队列需开启宏 OS_CFG_TASK_Q_EN3、使用消息队列,创建任务时需设置内建消息队列的大小如 :(OS_MSG_QTY) 2,二、相关API函数1、OSTaskQPend() 等待内建消息队列u8 *num;num=OSTaskQPend( 0, OS_OP...

2018-11-25 21:47:51 598

原创 UCOSIII消息队列

一、相关理论1、消息是指向数据的指针,可以是任务块或者是函数。2、任务的传递是指针传递,不是值的传递,(数据的本身不产生拷贝)。3、UCOSIII对消息的读取可以说(FIFO)先进先出,也可以先进后出(LIFO)。二、相关API函数1、定义消息队列#define KEY_Q_NUM 1 //消息队列长度OS_Q KEY_Msg; //定义一个消息队列2、OSQCre...

2018-11-25 20:57:08 1197

原创 UCOSIII 优先级反转 互斥信号量

一、优先级反转分析(1) 任务 H 和任务 M 处于挂起状态,等待某一事件的发生,任务 L 正在运行。(2) 某一时刻任务 L 想要访问共享资源,在此之前它必须先获得对应该资源的信号量。(3) 任务 L 获得信号量并开始使用该共享资源。(4) 由于任务 H 优先级高,它等待的事件发生后便剥夺了任务 L 的 CPU 使用权。(5) 任务 H 开始运行。(6) 任务 H 运行过程中也要使用...

2018-11-23 15:54:21 963

原创 UCOSIII 信号量 任务同步

一、信号量相关观念1、信号量是一种上锁机制,相关代码运行到被锁代码段,只有获得钥匙才能继续运行。2、信号量分二进制和计数型,二进制:为1时可以使用共享资源,为0时需等待。二进制型信号量一次只允许一个任务使用共享资源。即二进制型信号量主要用于共享资源的保护。计数型:当多个任务同时需要使用共享资源,每个任务请求一次信号量值减1,直至为零,资源被上锁。二、相关API函数1、 OSSemCr...

2018-11-23 11:04:54 828

原创 UCOSIII 软件定时器

一、相关理论1、使用定时器需开启宏   OS_CFG_TMR_DEL_EN     1u2、定时器分辨率由定义的系统节拍频率 OS_CFG_TICK_RATE_HZ 决定 如 OS_CFG_TMR_TASK_RATE_HZ = 100,系统时钟周期为  10ms  1000/100=10ms OS_CFG_TICK_RATE_HZ =200,系统时钟周期为 5ms,定时器的最小分辨...

2018-11-22 21:33:42 320

原创 UCOSIII任务挂起与恢复 时间片轮转调度

一、相关理论某些任务运行一段时间后暂时不需要用到,到后期又会用到,我们不能将其删除,只能将其挂起,等需要时再恢复。二、挂起函数void OSTaskSuspend (OS_TCB *p_tcb,OS_ERR *p_err)p_tcb: 指向任务块p_err: 保存错误码三、恢复函数void OSTaskResume (OS_TCB *p_tcb,OS_ERR *p_err)...

2018-11-22 19:51:34 814

原创 UCOSIII 任务创建与删除

一、编程要点1、初始化相关配置(时钟、中断分组、LED)2、创建开始任务3、在开始任务中创建 任务1、任务2函数4、编写任务函数二、库函数&结构体1、创建任务函数OSTaskCreateOS_TCB *p_tcb, //任务控制块 CPU_CHAR *p_name, //任务名字 ...

2018-11-15 16:37:49 510

原创 RTC时钟

一、编程要点 1、配置RTC时钟 2、开启RTC中断(秒,闹钟,溢出) 3、写中断服务函数 二、RTC基础知识 三、配置RTC的一般步骤 1、使能PWR和BKP时钟:RCC_APB1PeriphClockCmd(); PWR_BackupAccessCmd(); 2、初始化 BKP(备份寄存器) BKP_DeInit(); 3、开启LSE时钟 RCC_LSEC...

2018-09-13 22:50:08 990

原创 CAN总线

一、编程要点 CanTxData.StdId = 0; CanTxData.ExtId = PASS_ID; CanTxData.IDE = CAN_Id_Extended; CanTxData.DLC = 1; CanTxData.Data[0] = 10; CanTxData.RTR = CAN_...

2018-09-02 11:03:24 914

原创 ADC_双重同步规则

一、同步规则同步规则模式 ADC1 和 ADC2 同时各转换一个规则通道组,其中 ADC1 为主, ADC2 为从。 ADC1转换的结果放在 ADC1_DR的低 16位, ADC2转换的结果放在 ADC1_DR 的高十六位。二、触发转换方式ADC1ADC_SoftwareStartConvCmd( ADCx_1, ENABLE); //软件触发使能ADC2ADC_Ext...

2018-08-29 19:20:37 1977

原创 ADC_多通道DAM传输

一、初始化DMA传输 DMA_InitTypeDef DMA_InitStructure; //定义结构体 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //开启DMA时钟 DMA_DeInit(DMA1_Channel1); //决定数据从哪里来到哪里去 DMA_InitStructure.DMA_Periphera...

2018-07-03 18:53:45 1654 1

原创 ADC_单通道输出

一、编程要点1、初始化ADC相关GPIO2、设置ADC工作参数    1)配置ADC工作时钟    2)转换通道顺序和采样时间    3)使能转换完成通道     4)使能软件触发3、配置中断分组4、编写中断服务函数二、结构体&库函数1、ADC 初始化结构体typedef struct{ uint32_t ADC_Mode; /*!< ...

2018-07-01 17:17:43 2017

原创 高级定时器—PWM互补输出

一、编程要点1、初始化TMI相关GPIO2、初始化时基结构体3、初始化比较输出结构体4、初始化死区刹车结构体5、编写呼吸灯函数二、结构体&库函数1、时基结构体 typedef struct{  uint16_t TIM_Prescaler;         /*!<  预分频器 配置TIMxPSC 寄存器    */   uint16_t TIM_CounterMode;  ...

2018-06-30 16:36:38 5498

原创 基本定时器

一、编程要点1、初始化时基结构体2、配置中断优先级3、写中断服务函数4、写主函数二、定时时间计算定时时间 = 中断周期 * 中断次数    (以1S为例)TIM_Prescaler -> TIMxPSC 寄存器TIM_Period     -> ARR (自动重装载寄存器) TIMxCLK 系统时钟CK_CLK = 1/(TIMxCLK/(PSC+1))中断周期 = ...

2018-06-28 11:07:36 678

原创 FATFS_FLASH文件系统

一、编程要点1、将FATFS文件系统添加到工程中2、修改diskio.c 文件接口以及ffconf.h相关宏 3、编写测试函数二、修改diskio.c 文件1、disk_status()函数功能:获取磁盘当前(物理)状态DSTATUS disk_status ( BYTE pdrv /* 磁盘号*/){ DSTATUS stat; switch (pdrv) { case ATA_S...

2018-06-25 22:47:39 1075

原创 SPI_FLASH

一、编程要点

2018-06-17 17:44:25 381

原创 I2C_EEPROM 写入多字节 小数

一、写多字节void I2C_WriteMultibyte(uint8_t Addr,uint8_t *pBuffer,uint8_t num); void I2C_WriteMultibyte(uint8_t Addr,uint8_t *pBuffer,uint8_t num) //写入多个字节{ u8 i,temp; temp=num/8; //判断循环次数 for(...

2018-06-17 12:26:24 2262 2

原创 I2C_EEPROM

一、编程要点1、I2C相关GPIO以及外设使能2、初始化I2C结构体(模式、地址、速率等参数)3、编写I2C读写函数4、对EEPROM进行读写二、结构体&库函数1、I2C初始化结构 ( I2C_InitTypeDef )typedef struct{ uint32_t I2C_ClockSpeed; /*!< I2C通讯速率 不高于400 000 */ ...

2018-06-11 22:16:03 548

原创 DMA mtp

一、结构体配置void DMA_mtp_Config(void){ DMA_InitTypeDef DMA_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); DMA_InitStructure.DMA_PeripheralBaseAddr = USART_DR_addr;     //U...

2018-06-08 08:16:04 176

原创 DMA_mtom

一、编程要点1、初始化DMA结构体     数据从哪里来到哪里去    传输数目 传输单位    什么时候传输结束2、清楚相应标志位 3、DMA传输使能二、结构体&库函数1、DMA_InitTypeDefDMA_ InitTypeDef 初始化结构体typedef struct{uint32_t DMA_PeripheralBaseAddr; // 外设地址uint32_t DMA...

2018-06-05 22:24:18 1656

原创 USART_串口回显控制

一、程序内容1、串口发送并回显2、串口发送控制二、库函数1、串口接收数据函数uint16_t USART_ReceiveData(USART_TypeDef* USARTx)dat=USART_ReceiveData(USART1); @brief  串口接收数据    @param  USARTx            (1-5)    @retval 接收的数据三、程序源码vo...

2018-05-20 17:27:54 4480

原创 USART_串口通讯2

一、编程内容1、串口发送两个字节2、串口发送数组3、串口发送字符串二、新增库函数串口发送完成检测函数FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, u16 USART_FLAG)USART_FLAG_TC 用于判断串口数据是否发送完成 USART_FLAG 值USART_FLAG 描述USART_FLAG_CTS CTS 标志位US...

2018-05-20 12:27:57 812

原创 USART_串口通讯1

一、编程要点总结1、初始化USART1相关GPIO2、初始化USART结构体3、 配置中断优先级(NVIC)4、串口使能5、写中断函数二、代码分析1、初始化USART1相关GPIOGPIO_InitTypeDef GPIO_InitStructure; //定义GPIO初始化结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABL...

2018-05-19 21:22:15 1136

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除