<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[taoking123的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/taoking123</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; taoking123]]></copyright><item><title><![CDATA[stm32实现PWM单次脉冲输出]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/149167300</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/149167300</guid><author>taoking123</author><pubDate>Mon, 07 Jul 2025 10:33:09 +0800</pubDate><description><![CDATA[当前有个项目用到输出特定时间有效电平的功能，最先想到的是定时器的单脉冲模式。但查看用户手册，单脉冲模式只能使用定时器的通道1和通道2，且其中一个通道作为触发输入，另一个通道作为比较输出，与想象中的并不一样，因此只能另想办法。测试过程中，每次设置的PWM输出的时间都是上次设置的时间，通过查看用户手册，定时器每个通道的输出比较寄存器。因此需要再调用HAL_TIM_PWM_ConfigChannel之后，需要调用。可以通过使用PWM输出的中断模式，在触发输出比较的中断回调函数。]]></description><category></category></item><item><title><![CDATA[cc2652使用nvs遇到的问题及解决方案]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/147444616</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/147444616</guid><author>taoking123</author><pubDate>Wed, 23 Apr 2025 11:50:22 +0800</pubDate><description><![CDATA[它是给ble协议栈使用的（用于绑定配对等存储），不能由用户使用，如果用户调用NVS_open(CONFIG_NVSINTERNAL, &nvsParams);（Simple Non-Volatile storage），用于绑定配对等存储，它底层使用的就是CONFIG_NVSINTERNAL的flash空间，分配给用户使用的id范围是BLE_NVID_CUST_START到BLE_NVID_CUST_END，使用方法在此段描述的超链接中。还可以初始化一个isOpen的全局变量，如果已经打开，则跳过open。]]></description><category></category></item><item><title><![CDATA[解决cc2652做为client发送给对端的字节数最大为20的问题]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/139504682</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/139504682</guid><author>taoking123</author><pubDate>Thu, 06 Jun 2024 17:00:37 +0800</pubDate><description><![CDATA[即在BLE连接建立后，由作为client的cc2652通过调用GATT_ExchangeMTU函数发起更改MTU的操作，将MTU设置为想要的最大传输数据个数。= 23 字节）值，直到交换 MTU 过程产生更大的 MTU 大小。必须在每个低功耗蓝牙连接上执行交换 MTU 过程，并且必须由客户端启动。属性的特征值给对端（APP）发送数据时，最多只能发送20个字节。原因是：虽然可以将堆栈配置为支持。最多 255 个字节，但每个低功耗蓝牙连接最初都使用默认的 27 字节（测试cc2652最为client通过拥有。]]></description><category></category></item><item><title><![CDATA[cc2652移植letter-shell]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/139468365</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/139468365</guid><author>taoking123</author><pubDate>Wed, 05 Jun 2024 12:00:39 +0800</pubDate><description><![CDATA[移植主要是修改shell_port.c、shell_port.h、shell_cfg_user.h三个文件，如果想使用SHELL_EXPORT_CMD()等导出命令，还需要修改链接器文件，即cc2652工程的*.cmd文件。其中，userShellLock/Unlock可以使用二值信号量或者GataMutex(Pri)互斥锁实现，我选择的是GataMutexPri，可以通过修改注释的代码用Semaphore实现，或者用GataMutex实现。如果想使用命令列表的方式，可以不需要修改*.cmd文件。]]></description><category></category></item><item><title><![CDATA[stm32同时使用ADC1和ADC2注意的问题]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/138065797</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/138065797</guid><author>taoking123</author><pubDate>Mon, 22 Apr 2024 10:34:01 +0800</pubDate><description><![CDATA[stm32的adc1和adc2可以设置为同步模式，即使ADC1和ADC2配置为独立模式，也需要注意，在调用HAL_ADCEx_MultiModeConfigChannel函数将ADC1配置为独立模式时，ADC1和ADC2必须都失能或者使能时停止ADC转换（Parameters that can be updated when ADC is disabled or enabled without conversion on going on regular group），否则HAL_ADCEx_MultiMo]]></description><category></category></item><item><title><![CDATA[实现stm32使用DMA单次采集多通道ADC数据]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/137882915</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/137882915</guid><author>taoking123</author><pubDate>Wed, 17 Apr 2024 18:34:40 +0800</pubDate><description><![CDATA[除了使用单次DMA实现多通道数据采集的方式，还可使用“Discontinuous Conversion Mode”的方式用轮询的方式实现，代码如下所示，每次调用HAL_ADC_Start会执行一个通道数据转换，调用HAL_ADC_GetValue获取此通道数据，再调用HAL_ADC_Start启动下一个通道的转换，直到所有通道转换完毕，再次调用HAL_ADC_Start时开启新一轮的转换。]]></description><category></category></item><item><title><![CDATA[解决STM32CubeIDE不能调试的问题]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/135667690</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/135667690</guid><author>taoking123</author><pubDate>Thu, 18 Jan 2024 10:41:54 +0800</pubDate><description><![CDATA[当安装完IDE之后，点击“运行”或“调试”时，会报一些错误，比如加载elf文件失败、gdb运行失败等，主要原因是未配置“运行配置”，下面将介绍如何进行配置。3. 选择调试器，如下图，CubeIDE默认只支持ST-Link和JLink，对DAP-Link等不友好，需要繁琐的配置。2. 选择STM32 C/C++ Application，点击左上角的新建配置按钮，如下图。4. 点击运行“运行”按钮，即可完成配置。此配置只需配置一次。到此即可以下载程序和调试。]]></description><category></category></item><item><title><![CDATA[基于gd32f4xx的rtthread使用hwtimer遇到的问题]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/132814981</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/132814981</guid><author>taoking123</author><pubDate>Mon, 11 Sep 2023 18:34:17 +0800</pubDate><description><![CDATA[TIMER1/2/3/4/5/6/11/12/13属于APB1；以TIMER4为例，它的时钟由CK_AHB、APB1 Prescaler的分频（由RCU_CFG0寄存器的[10:12]位（APB1PSC[2:0]）设置）和CK_APB1的倍频（由RCU_CFG1寄存器的[24]位（TIMERSEL））实现。rcu_clock_freq_get(CK_APB1)函数获取CK_APB1的值，即CK_AHB经过APB1 Prescaler分频后的值，由它决定prescaler的值。定时器的时钟设置如下图所示。]]></description><category></category></item><item><title><![CDATA[GD32F4单片机实现接收超时中断+DMA实现串口的不定长接收和DMA发送]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/130933511</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/130933511</guid><author>taoking123</author><pubDate>Mon, 29 May 2023 17:56:48 +0800</pubDate><description><![CDATA[GD32F4单片机实现接收超时中断+DMA实现串口的不定长接收和DMA发送]]></description><category></category></item><item><title><![CDATA[QP: 一种替代前后台和RTOS的程序框架]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/130824579</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/130824579</guid><author>taoking123</author><pubDate>Tue, 23 May 2023 12:20:38 +0800</pubDate><description><![CDATA[QP(量子平台)是一个基于活动对象和层次式状态机的开源实时嵌入式框架(real-time embedded frameworks)和运行环境。一种优秀的可以代替前后台和RTOS的实时运行框架]]></description><category></category></item><item><title><![CDATA[EFR32MG22与TI CC2652RSIP对比]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/124496019</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/124496019</guid><author>taoking123</author><pubDate>Fri, 29 Apr 2022 15:17:01 +0800</pubDate><description><![CDATA[1. 性能对比

MCU
	参数  
			EFR32MG22
			CC2652RSIP
		内核
			
			Cortex-M33
			
			
			Cortex-M4F
			
		
			工作频率
			
			
			76.8 MHz
			
			
			48 MHz
			
		协处理器
			-
			Yes
		
			Flash
			
			
			512 kB
			
			
			352 KB
			
		
			RAM
			
			
			32 kB
			
		...]]></description><category></category></item><item><title><![CDATA[C语言编程规范（精华总结）]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/124492176</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/124492176</guid><author>taoking123</author><pubDate>Fri, 29 Apr 2022 14:32:20 +0800</pubDate><description><![CDATA[目录

1、代码总体原则

2、头文件

3、函数

4、标识符命名与定义

5、变量

6、宏、常量

7、表达式

8、注释

9、排版与格式

10、代码编辑编译


1、代码总体原则

1.1、清晰第一

清晰性是易于维护、易于重构的程序必需具备的特征。代码首先是给人读的，好的代码应当可以像文章一样发声朗诵出来。

目前软件维护期成本占整个生命周期成本的40%~90%。根据业界经验，维护期变更代码的成本，小型系统是开发期的5倍，大型系统（100万行代码以上）可以达到100倍。业界的调查指出，开发组.]]></description><category></category></item><item><title><![CDATA[ARM Cortex-M3/M4内核相关]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/124426567</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/124426567</guid><author>taoking123</author><pubDate>Tue, 26 Apr 2022 14:50:22 +0800</pubDate><description><![CDATA[1、什么是ARM Cortex-M处理器

1.1、Cortex-M3和Cortex-M4处理器

Cortex-M3（2005年发布）和Cortex-M4（2010年发布）处理器是ARM公司设计的处理器。

Cortex-M3和Cortex-M4处理器使用32位架构，寄存器组中断内部寄存器、数据以及总线接口都是32位。Cortex-M处理器使用的指令集架构（ISA）是Thumb ISA(是一种RISC(精简指令集))，其基于Thumb-2技术并同时支持16位和32位指令。

主要有以下特点：

三级流水线]]></description><category></category></item><item><title><![CDATA[CC2652 OAD升级]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/124423390</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/124423390</guid><author>taoking123</author><pubDate>Tue, 26 Apr 2022 12:12:56 +0800</pubDate><description><![CDATA[1、介绍

执行一个OAD需要两个无线设备:

OAD目标设备（OAD Target）
	OAD分发设备（OAD Distributor）
OAD目标设备接收通过无线传输的镜像。负责实现用于发送和接收OAD镜像数据的协议栈特定传输层。

OAD分发设备负责将新固件镜像分割成协议堆栈特定的包，并通过空中发送它们。



2、启动镜像管理器 (BIM)

BIM是一个完全可执行的应用程序，它独立于任何高级协议栈或用户应用程序。它永久驻留在OAD目标芯片上的最后一个flash页，CCFG也在此页。修改CCFG的I]]></description><category></category></item><item><title><![CDATA[CC2652 on-chip OAD程序升级记录全过程]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/124422142</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/124422142</guid><author>taoking123</author><pubDate>Tue, 26 Apr 2022 11:02:12 +0800</pubDate><description><![CDATA[CC2652 on-chip OAD升级]]></description><category></category></item><item><title><![CDATA[基于原子探索者stm32f407开发板的ucos-iii+lwip1.4.1的tcp server并发服务器解决例程]]></title><link>https://blog.youkuaiyun.com/taoking123/article/details/124388648</link><guid>https://blog.youkuaiyun.com/taoking123/article/details/124388648</guid><author>taoking123</author><pubDate>Sun, 24 Apr 2022 18:26:57 +0800</pubDate><description><![CDATA[此方案是基于原子探索者stm32f407开发板的一种ucos-iii+lwip1.4.1的tcp server并发服务器解决例程，实现子tcp连接的动态处理，包括建立子连接时的动态任务创建、资源创建；子连接断开连接时的任务删除和资源回收]]></description><category></category></item></channel></rss>