- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 当指针作为局部指针变量时的注意事项
情形1:uint8_t func(uint8_t a){ uint8_t temp =0 ;/*用输入变量a计算temp的值*/ return temp ;}这样是OK的,因为返回的是temp的副本情形2uint8_t *func(uint8_t a){ uint8_t temp =0 ;/*用输入变量a计算temp的值*
2017-11-28 13:30:23 1227
原创 OAD(OTA)完成后,蓝牙设备没有重启的原因
CC2640在OAD(OTA)完成以后,会主动断开蓝牙连接,然后重启。但是测试时会发现有时OAD成功,但是CC2640没有重启。需要手动重启CC2640.后来找到原因:手机app收到蓝牙的断开蓝牙连接通知,但是依然持有character,依然保持蓝牙连接。此时手机app主动把蓝牙断开,CC2640就会正常重启。
2017-11-28 09:09:29 651
原创 CC2640的Flash操作
在CC2640里,osal_snv_write的API函数是基于ICall层来操作的。因此,需要把flash操作和simplepherial的task绑定。在上述task初始化时,增加FlashOperationMessage_RegisterAppCBs(&user_flashOperationMessageCBs);在变量设初始值时,设定static flashOp
2017-11-21 10:56:59 1587
原创 Andriod8.0扫描不到BLE设备的原因
昨天尝鲜升级了一次手机系统,把系统升级到了Android8.0。今天测试的时候意外发现扫描不到自己的蓝牙小设备(假如定义为设备A)。描述如下:1. Android8.0 + nrf connect扫描不到设备A,但是可以正常扫描到苹果手表和小米手环2.2. Android8.0+系统蓝牙也扫描不到设备A,但是可以正常扫描到苹果手表和小米手环2.3. Android(其他版本)+ n
2017-11-16 16:44:10 10725 12
原创 获取寄存器地址的方法
如果需要使用TX1的DMA传输,就会涉及到配置DMA的外设地址。在这里,外设地址应该是USART1的DR寄存器的地址。可是如何获取该寄存器的地址呢?现在实测了3种方式,都可以实现。方法1:直接查询手册中寄存器映像(map),USART1的DR地址为0x40013804方法2:手册中查看,DR寄存器的偏移地址为0X04,那么USART1的DR地址可以写成(USART1
2017-11-16 11:21:30 9664
原创 LL库通过串口+DMA方式发送数据
在RM0038(L151的手册)中的Chapter 27.3.13 Continuous communication using DMA章节有配置的方式和顺序:Transmission using DMA:DMA mode can be enabled for transmission by setting DMAT bit in the USART_CR3 register.
2017-11-16 10:46:52 12971 2
原创 RTOS下不同任务传值的方式
开发ios的同事反馈说,最近一版的蓝牙连接时,20次里面会有1~2次回复“未识别的命令”。虽然经过半天的查找和测试,ios的code里面改动了些东西,概率有了显著的下降,但是50次依然有1~2次回复“未识别的命令”。后来ios的code做了容错处理,问题消失,但是我心里依然明白:问题并没有从根本上解决。我没法对这个问题做评估,最坏的结果是这个小bug还有可能会危害到整个系统。未完待续
2017-11-14 17:00:00 1041
原创 如何使用Stm32CubeMX和LL库实现窗口看门狗
窗口看门狗对时间的要求比独立看门狗更加严格。必须在设定的上限时间和下限时间之间喂狗,如果喂狗时间高于上限时间或者低于下限时间,都会导致看门狗触发重启机制。其中下限时间是系统固定的,为0X40。上限时间是用户可以定义的,大于0X40同时小于0X7F即可。 在Stm32CubeMX里面,WWDG的上限时间为:WWDG window value,WWDG不断减少的Couner名为:WWDG
2017-11-13 13:55:18 2901 1
原创 如何让stm32L151工作在使用LL库的情况下 ,运行在32M时钟
Stm32L151是用来做低功耗应用的,该芯片虽然也是M3的核,但是最大只能工作在32M(比f103的64M(HSI)和72M(HSE)相差巨大)第一次使用Stm32CubeMX配置该芯片,生成工程后竟然无法执行。时钟树配置如下图调试断点后,判断程序死在了这段代码位置void SystemClock_Config(void){ LL_FLASH_SetLatency(L
2017-11-10 17:06:45 3306
原创 STM32CubeMX+FreeRTOS实验---使用os timer
在STM32CubeMX的FreeRTOS配置中,使能FreeRTOS的Software Timer功能修改timer的名称及callback名称等可以看到,在生成工程的main.c文件的main函数中,有以下code /* Create the timer(s) */ /* definition and creation of myTimer01 */ osTime
2017-11-10 10:34:04 9968
原创 指针作为局部变量的注意事项
参见http://www.cnblogs.com/stoneJin/archive/2011/09/21/2183962.html所述。#include //此函数中d也是个局部变量,函数执行完自动销毁,但是指针分配的空间不会被自动回收,除非程序员delete掉。//所以这个可以正常输出。char *a(){ char *d = "ZET";//这个初始化的一种形式,相当
2017-11-10 09:11:01 5409
原创 STM32CubeMX+FreeRTOS实验---使用两个实例,共用一个task
假如有两个Task,行为类型,只是个别参数不一样。那么可以使用同一个task,来实现两个实例。这两个实例是相互独立的:Each created instance will execute independentlyunder the control of the FreeRTOS scheduler. 以两个LED的task任务为例子,假设LED1和LED2都是每1s变换一次。那么,建
2017-11-08 16:14:20 12870
原创 Stm32cubeMX+FreeRTOS的Flash占用情况
情况1:1. 使用两个空Task+1个timer+1个queue2.10 404 bytes of readonly code memory 80 bytes of readonly data memory 5 752 bytes of readwrite data memory
2017-11-07 15:57:39 2924
原创 芯片选择LL库还是HAL库
LL库和HAL的选择主要根据两点:1. ST官方是否支持2. 芯片Flash和SRAM是否宽裕。要查看官方是否支持,可以执行以下操作执行:1. 下载安装最新的STM32CubeMX,选择芯片型号后,Project-》Setting-》Advanced Setting2. 查看相关驱动的下拉菜单,看是否有LL选项,如果有的话,就可以选择,如下图,这个芯片使用是STM32F
2017-11-07 10:09:20 11019
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人