<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ll148305879的博客]]></title><description><![CDATA[专注于车载技术]]></description><link>https://blog.youkuaiyun.com/ll148305879</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ll148305879]]></copyright><item><title><![CDATA[&与-＞ 哪个优先级高]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/122436882</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/122436882</guid><author>ll148305879</author><pubDate>Tue, 11 Jan 2022 17:04:07 +0800</pubDate><description><![CDATA[优先级 运算符 名称或含义 使用形式 结合方向 说明
1 [] 数组下标 数组名[常量表达式] 左到右
() 圆括号 （表达式）/函数名(形参表)
. 成员选择（对象） 对象.成员名
-&gt; 成员选择（指针） 对象指针-&gt;成员名
2 - 负号运算符 -表达式 右到左 单目运算符
(类型) 强制类型转换 (数据类型)表达式
++ 自增运算符 ++变量名/变量名++ 单目运算符
-- 自减运算符 --变量名/变量名-- 单目运算符
* 取值运算符 *指针变量 单目运算符
&amp; 取地址运算符 &a]]></description><category></category></item><item><title><![CDATA[定义一个函数指针类型]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/122405751</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/122405751</guid><author>ll148305879</author><pubDate>Mon, 10 Jan 2022 10:54:23 +0800</pubDate><description><![CDATA[定义一个函数指针类型

函数指针通常用来实现回调，其基本用法如下：

1、定义函数指针类型

// 定义一个原型为int Fun( int a );的函数指针

typedef int (*PTRFUN) ( int aPara );

2、函数指针变量的定义

PTRFUN pFun; // pFun 为函数指针变量名

int (*pFun2) ( int a ); // pFun2也是函数指针变量名

3、函数指针作为函数的参数传递

// 定义回调函数

int CallBack( int...]]></description><category></category></item><item><title><![CDATA[柔性数组介绍]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/122219983</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/122219983</guid><author>ll148305879</author><pubDate>Wed, 29 Dec 2021 16:57:37 +0800</pubDate><description><![CDATA[柔性数组 
柔性数组，简而言之就是一个在struct结构里的标识占位符（不占结构struct的空间），只能在堆上生成。  在结构体内，有一个数组，必须是结构体中的最后一个元素，而且有特定的形式[]或者[0],结构体中至少要有两个成员体变量。  实例：  此时的字符数...]]></description><category></category></item><item><title><![CDATA[直接网络管理与间接网络管理的区别]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/118045708</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/118045708</guid><author>ll148305879</author><pubDate>Sat, 19 Jun 2021 08:40:05 +0800</pubDate><description><![CDATA[OSEK直接网络管理分配了特定的网络管理CAN报文在网络上发送，而间接网络管理就是根据网络上其他控制器的应用报文发送周期来间接判断网络状态。

很显然间接网络管理可以降低网络负载，提高网络实时性和安全性，通常间接网络管理也就是用在实时性要求较高的动力CAN网络上，其网络上的控制器用KL15硬线下电进行休眠，不需要复杂的策略。

而直接网络管理常用在车身CAN这种实时性不高的网络上，由于这些控制器都是KL30常电供电，以备随时唤醒，因此采用直接网络管理这种令牌环策略的网络管理机制，使网络上的所有控制器同步进入]]></description><category></category></item><item><title><![CDATA[旋转编码器工作原理]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/113121017</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/113121017</guid><author>ll148305879</author><pubDate>Mon, 25 Jan 2021 16:33:36 +0800</pubDate><description><![CDATA[旋转编码器工作原理



一、旋转编码器的原理和特点：

    旋转编码器是集光机电技术于一体的速度位移传感器。当旋转编码器轴带动光栅盘旋转时，经发光元件发出的光被光栅盘狭缝切割成断续光线，并被接收元件接收产生初始信号。该信号经后继电路处理后，输出脉冲或代码信号。其特点是体积小，重量轻，品种多，功能全，频响高，分辨能力高，力矩小，耗能低，性能稳定，可靠使用寿命长等特点。

1、增量式编码器

    增量式编码器轴旋转时，有相应的相位输出。其旋转方向的判别和脉冲数量的增减，需借助后部的判...]]></description><category></category></item><item><title><![CDATA[指针 + 1]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/109743172</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/109743172</guid><author>ll148305879</author><pubDate>Tue, 17 Nov 2020 15:03:42 +0800</pubDate><description><![CDATA[指针 + 1

指针 + 1 并不是指针代表的地址值 + 1.

指针变量加1，即向后移动1 个位置表示指针变量指向下一个数据元素的首地址。而不是在原地址基础上加1。至于真实的地址加了多少，要看原来指针指向的数据类型是什么。






	char a = 'a';
	
	
	char *p = &amp;a;
	
	
	cout&lt;&lt;(void*)p&lt;&lt;" "&lt;&lt;(void*)(p+1)&lt;&lt;endl;
	
	
	//输出：0012FF33 0012FF34..]]></description><category></category></item><item><title><![CDATA[结构体大小的计算]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/109743133</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/109743133</guid><author>ll148305879</author><pubDate>Tue, 17 Nov 2020 15:02:34 +0800</pubDate><description><![CDATA[结构体大小的计算

分类编程技术

用最简单的方法，通俗易懂的方法计算结构体大小。

结构体计算要遵循字节对齐原则。

结构体默认的字节对齐一般满足三个准则：

1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除；
	2) 结构体每个成员相对于结构体首地址的偏移量（offset）都是成员大小的整数倍，如有需要编译器会在成员之间加上填充字节（internal adding）；
	3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍，如有需要编译器会在最末一个成员之后加上填充字节（trailin.]]></description><category></category></item><item><title><![CDATA[STVP提示The device is protected解决方法]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/107330655</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/107330655</guid><author>ll148305879</author><pubDate>Tue, 14 Jul 2020 09:17:28 +0800</pubDate><description><![CDATA[STVP提示The device is protected解决方法




	1
	
	
	2
	
	
	3
	
	
	4
	
	
	5
	
	
	6
	
	
	7
	
分步阅读

STM8芯片写程序提示The device is protected，芯片烧写程序写保护的解决方法

方法/步骤


	拿到一块板子要给芯片更新程序，提示The device is protected，芯片写保护，不用担心，单击“确定”

	
	
	
	然后选择面板上的第三项“option byte”进行设置

	
	
	
	.]]></description><category></category></item><item><title><![CDATA[STM32进入STOP模式并唤醒实验总结]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/106495025</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/106495025</guid><author>ll148305879</author><pubDate>Tue, 02 Jun 2020 14:06:00 +0800</pubDate><description><![CDATA[STM32进入STOP模式并唤醒实验总结


展开
项目需求，需要实现设备低功耗功能，实现过程中遇到几个问题，以此记录总结。（stm32f103ret6）

问题一：执行PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);后，程序继续执行，看到的现象像是没有进入休眠。


调试步骤：

1.关闭自己的时钟配置，调用启动函数中默认的SystemInit()

2.关闭相关外设初始化，只开启串口一以追踪程序运行流程和一个IO中断以唤醒

...]]></description><category></category></item><item><title><![CDATA[STM32L0 进入STOP模式后串口中断方式唤醒]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/106478960</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/106478960</guid><author>ll148305879</author><pubDate>Mon, 01 Jun 2020 18:09:28 +0800</pubDate><description><![CDATA[STM32L0 进入STOP模式后串口中断方式唤醒


展开
实现功能：单片机以一定的采样频率（如2Khz）进行采样，例如每分钟（60s）只采前30s，后30s休眠（定时休眠唤醒），等到下一分钟再自动wakeup，如此循环30分钟。30分钟之后，单片机进入休眠stop模式。用串口中断的方式将休眠的单片机唤醒。

实现方法:

1、定时休眠唤醒code

HAL_Delay(2000);//进行采样的时间
HAL_RTCEx_DeactivateWakeUpTimer(&amp;RTCHandle);
HAL]]></description><category></category></item><item><title><![CDATA[NVIC_PriorityGroupConfig()说明]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/106274156</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/106274156</guid><author>ll148305879</author><pubDate>Fri, 22 May 2020 10:13:03 +0800</pubDate><description><![CDATA[NVIC_PriorityGroupConfig()说明



STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级，有人把响应优先级称作'亚优先级'或'副优先级'，每个中断源都需要被指定这两种优先级。

具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应，即中断嵌套，或者说高抢占式优先级的中断可以嵌套在低抢占式优先级的中断中。

当两个中断源的抢占式优先级相同时，这两个中断将没有嵌套关系，当一个中断到来后，如果正在处理另一个中断，这个后到来的中断就要等到前.]]></description><category></category></item><item><title><![CDATA[STM32 GPIO外部中断总结]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/106240800</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/106240800</guid><author>ll148305879</author><pubDate>Wed, 20 May 2020 17:30:30 +0800</pubDate><description><![CDATA[STM32 GPIO外部中断总结

一、STM32中断分组：

　　STM32 的每一个GPIO都能配置成一个外部中断触发源，这点也是STM32的强大之处。STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组，比如：PA0，PB0，PC0，PD0，PE0，PF0，PG0为第一组，那么依此类推，我们能得出一共有16 组，STM32 规定，每一组中同时只能有一个中断触发源工作，那么，最多工作的也就是16个外部中断。STM32F103的中断控制器支持19个外部中断/事件请求。每个中断设有状态位...]]></description><category></category></item><item><title><![CDATA[RCC_APB1和RCC_APB2的区别]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/106239285</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/106239285</guid><author>ll148305879</author><pubDate>Wed, 20 May 2020 16:37:56 +0800</pubDate><description><![CDATA[RCC_APB1和RCC_APB2的区别



他们下面挂的外设不同，因为不同的外设需要的时钟不同。

一个是高速时钟，一个是低速时钟
具体看STM32的时钟介绍。

APB2负责AD，I/O，串口1，高级定时器TIM
APB1负责DA，串口2，3，4，5，普通定时器TIM, USB , IIC , CAN
...]]></description><category></category></item><item><title><![CDATA[STM32——PWM基本知识及配置过程]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/106197529</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/106197529</guid><author>ll148305879</author><pubDate>Mon, 18 May 2020 17:28:04 +0800</pubDate><description><![CDATA[STM32——PWM基本知识及配置过程

STM32——PWM基本知识及配置过程
将通用定时器分为四个部分:
   1,选择时钟
   2,时基电路
   3,输入捕获
   4,输出比较
本节定时器PWM输出主要涉及到定时器框图右下方部分,即输出比较部分

和上一讲相同,时基时钟来源于内部默认时钟

对此有疑问请参考 :定时器中断实验中 定时器时钟选择部分 和 定时器时钟来源部分

什么是PWM
脉冲宽度调制(PWM)，是英文“Pulse Width Modulation”的缩...]]></description><category></category></item><item><title><![CDATA[【STM32】STM32端口复用和重映射（AFIO辅助功能时钟）]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/106197333</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/106197333</guid><author>ll148305879</author><pubDate>Mon, 18 May 2020 17:20:51 +0800</pubDate><description><![CDATA[【STM32】STM32端口复用和重映射（AFIO辅助功能时钟）


STM32F1xx官方资料：

《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO)



端口复用功能
端口复用的定义
STM32有许多的内置外设（如串口、ADC、DCA等等），这些外设的外部引脚都是和GPIO复用的。也就是说，一个GPIO如果可以复用为内置外设的功能引脚，那么当这个GPIO作为内置外设使用的时候，就叫复用。详细的可以参考《STM32F103ZET6数据手册》p30的内容，表格的倒数第二栏就.]]></description><category></category></item><item><title><![CDATA[STM32F103使用内部晶振的配置及64M主频异常的解决方法]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/106138302</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/106138302</guid><author>ll148305879</author><pubDate>Fri, 15 May 2020 11:29:55 +0800</pubDate><description><![CDATA[STM32F103使用内部晶振的配置及64M主频异常的解决方法



为了节省空间与成本，将STM32F103芯片外接晶振去除，使用内部HSI时钟，配置方法如下：

voidRCC_Configuration(void)
	{
	/*EnablePrefetchBuffer*/
	FLASH-&gt;ACR|=FLASH_ACR_PRFTBE;
	/*Flash2waitstate*/
	FLASH-&gt;ACR&amp;=(uint32_t)...]]></description><category></category></item><item><title><![CDATA[IAR 6.3中intrinsics.h与core_cm3.h 中的兼容错误解决方法]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/106113135</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/106113135</guid><author>ll148305879</author><pubDate>Thu, 14 May 2020 09:39:04 +0800</pubDate><description><![CDATA[IAR 6.3中intrinsics.h与core_cm3.h 中的兼容错误解决方法



解决办法1:
用IAR6.3打开IAR6.0 的工程，编译的时候出现提示错误：
extern uint32_t __get_PSP(void); 已经在C:\Program Files\IAR Systems\Embedded Workbench 6.0\arm\inc\c\intrinsics.h文件中定义
extern uint32_t __get_MSP(void);已经在C:\Program Files\I.]]></description><category></category></item><item><title><![CDATA[解释下const引用形参？]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/105528195</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/105528195</guid><author>ll148305879</author><pubDate>Wed, 15 Apr 2020 09:46:09 +0800</pubDate><description><![CDATA[所谓的const的含义, 就是该变量为"常数", 不应该也不会去修改它.
void fun(const int ival){
ival = 3; // 编译错误, 无法修改一个const对象.
}
void fun(const int&amp; ival){ // 引用参数
ival = 3; // 编译错误, 无法修改一个const对象.
}
也就是说, 只要对象的声明中带有const标识, 任...]]></description><category></category></item><item><title><![CDATA[回调函数的理解]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/105160181</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/105160181</guid><author>ll148305879</author><pubDate>Sat, 28 Mar 2020 13:51:10 +0800</pubDate><description><![CDATA[回调函数的理解

前言：

   刚开始用C语言听说过回调函数，但没有仔细去理解，随着工作的慢慢积累，逐步的用到了回调函数，本人认为，“回调函数”的理解对于很多人是一个槛，要想跨过，就得理解清楚，还得会用。这里就用本人的方式讲解一下回调函数如何理解。



第一步：通俗的解释“回调函数”

一、回调就是一种利用函数指针进行函数调用的过程。

二、你到一个商店买东西，刚好你要的东西没有...]]></description><category></category></item><item><title><![CDATA[mos管h桥电机驱动电路与设计原理图-KIA]]></title><link>https://blog.youkuaiyun.com/ll148305879/article/details/103629841</link><guid>https://blog.youkuaiyun.com/ll148305879/article/details/103629841</guid><author>ll148305879</author><pubDate>Fri, 20 Dec 2019 11:31:12 +0800</pubDate><description><![CDATA[一、mos管H桥电路

图1中所示为一个典型的直流电机控制电路。

电路得名于“H桥驱动电路”是由于它的外形酷似字母H。4个三极管组成H的4条垂直腿，而电机就是H中的横杠（留意：图1及随后的两个图都只是表示图，而不是完好的电路图，其中三极管的驱动电路没有画出来）。



如图所示，H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转，必需导通对角线上的一对三极管。依据不同三极管对的导通状况，...]]></description><category></category></item></channel></rss>