嵌入式分享合集164

2023-11-11 05:10
文章标签 分享 嵌入式 合集 164

本文主要是介绍嵌入式分享合集164,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、STM32时钟系统详解

1 STM32的时钟源主要有:

  • 内部时钟

  • 外部时钟

  • 锁相环倍频输出时钟

1.1 详细介绍

HSI(内部高速时钟)

  • 它是RC振荡器,频率可以达到8MHZ,可作为系统时钟和PLL锁相环的输入

HSE(外部高速时钟)

  • 接入晶振范围是4-16MHZ,可作为系统时钟和PLL锁相环的输入,还可以经过128分频之后输入给RTC。

LSI(内部低速时钟)

  • 它是RC振荡器,频率大概为40KHZ,供给独立看门狗或者RTC,并且独立看门口只能依靠LSI作为时钟源

LSE(外部低速时钟)

  • 通常外接32.768MHZ晶振提供给RTC

PLL(锁相环)

  • 用来倍频输出。因为开发板外部晶振只有8MHZ,而STM32最大工作频率是72MHZ。他可以通过HSI输入,HSE输入或两分频输入,通过PLL倍频(2-16),倍频之后输入给系统时钟。

MCO(时钟输出管脚)

  • 通常对应STM32 PA8,它可以选择一个时钟信号输出,给外部的系统提供时钟源

2 标准库的时钟配置

2.1 STM32启动文件

首先打开startup_stm32f10x_hd.s,该文件为stm32的启动文件,在该文件内会发现有这么一块用汇编写的代码。

      Reset_Handler   PROC            EXPORT  Reset_Handler    [WEAK]            IMPORT  __main            IMPORT  SystemInit            LDR     R0, =SystemInit            BLX     R0                           LDR     R0, =__main            BX      R0            ENDP

通过这段汇编代码可以看出,程序在执行main函数之前,会先执行SystemInit函数。

2.2 SystemInit函数详解

void SystemInit (void)
{/* Reset the RCC clock configuration to the default reset state(for debug purpose) *//* Set HSION bit */RCC->CR |= (uint32_t)0x00000001;/* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
#ifndef STM32F10X_CLRCC->CFGR &= (uint32_t)0xF8FF0000;
#elseRCC->CFGR &= (uint32_t)0xF0FF0000;
#endif /* STM32F10X_CL */   /* Reset HSEON, CSSON and PLLON bits */RCC->CR &= (uint32_t)0xFEF6FFFF;/* Reset HSEBYP bit */RCC->CR &= (uint32_t)0xFFFBFFFF;/* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */RCC->CFGR &= (uint32_t)0xFF80FFFF;#ifdef STM32F10X_CL/* Reset PLL2ON and PLL3ON bits */RCC->CR &= (uint32_t)0xEBFFFFFF;/* Disable all interrupts and clear pending bits  */RCC->CIR = 0x00FF0000;/* Reset CFGR2 register */RCC->CFGR2 = 0x00000000;
#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)/* Disable all interrupts and clear pending bits  */RCC->CIR = 0x009F0000;/* Reset CFGR2 register */RCC->CFGR2 = 0x00000000;      
#else/* Disable all interrupts and clear pending bits  */RCC->CIR = 0x009F0000;
#endif /* STM32F10X_CL */#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)#ifdef DATA_IN_ExtSRAMSystemInit_ExtMemCtl(); #endif /* DATA_IN_ExtSRAM */
#endif /* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers *//* Configure the Flash Latency cycles and enable prefetch buffer */SetSysClock();#ifdef VECT_TAB_SRAMSCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
#elseSCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
#endif 
}

打开内部8M时钟:

RCC->CR |= (uint32_t)0x00000001

通过查看寄存器手册可知,这段代码为打开内部8M时钟。

设置时钟配置寄存器:

#ifndef STM32F10X_CL  RCC->CFGR &= (uint32_t)0xF8FF0000;#else  RCC->CFGR &= (uint32_t)0xF0FF0000;#endif /* STM32F10X_CL */   

 whaosoft aiot http://143ai.com 

2.3 SetSysClock()函数详解

static void SetSysClock(void){#ifdef SYSCLK_FREQ_HSE  SetSysClockToHSE();#elif defined SYSCLK_FREQ_24MHz  SetSysClockTo24();#elif defined SYSCLK_FREQ_36MHz  SetSysClockTo36();#elif defined SYSCLK_FREQ_48MHz  SetSysClockTo48();#elif defined SYSCLK_FREQ_56MHz  SetSysClockTo56();  #elif defined SYSCLK_FREQ_72MHz  SetSysClockTo72();#endif}

system_stm32f10x.c文件中会根据芯片的型号定义对应的宏:

#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
/* #define SYSCLK_FREQ_HSE    HSE_VALUE */#define SYSCLK_FREQ_24MHz  24000000
#else
/* #define SYSCLK_FREQ_HSE    HSE_VALUE */
/* #define SYSCLK_FREQ_24MHz  24000000 */ 
/* #define SYSCLK_FREQ_36MHz  36000000 */
/* #define SYSCLK_FREQ_48MHz  48000000 */
/* #define SYSCLK_FREQ_56MHz  56000000 */
#define SYSCLK_FREQ_72MHz  72000000
#endif

3 时钟配置函数

3.1 时钟初始化配置函数​​​​​​​

void SystemInit(void);SYSCLK(系统时钟)=72MHZ;AHB总线时钟(HCLK=SYSCLK)=72MHZ;APB1总线时钟(PCLK1=SYSCLK/2)=36MHZ;APB2总线时钟(PCLK1=SYSCLK/1)=72MHZ;PLL主时钟=72MHZ;

3.2 外设时钟使能配置函数​​​​​​​

void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);

3.3 时钟源使能函数​​​​​​​

void RCC_HSICmd(FunctionalState NewState);void RCC_LSICmd(FunctionalState NewState);void RCC_PLLCmd(FunctionalState NewState);void RCC_RTCCLKCmd(FunctionalState NewState);

3.4 时钟源和倍频因子配置函数​​​​​​​

void RCC_HSEConfig(uint32_t RCC_HSE);void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource);void RCC_HCLKConfig(uint32_t RCC_SYSCLK);void RCC_PCLK1Config(uint32_t RCC_HCLK);void RCC_PCLK2Config(uint32_t RCC_HCLK);

3.5 外设时钟复位函数​​​​​​​

void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);

 3.6 自定义系统时钟​​​​​​​

void RCC_HSE_Config(u32 div,u32 pllm)
{RCC_DeInit();RCC_HSEConfig(RCC_HSE_ON);if(RCC_WaitForHSEStartUp()==SUCCESS){   RCC_HCLKConfig(RCC_SYSCLK_Div1);RCC_PCLK1Config(RCC_HCLK_Div2);RCC_PCLK2Config(RCC_HCLK_Div1);RCC_PLLConfig(div,pllm);RCC_PLLCmd(ENABLE);     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK)while(RCC_GetSCLKSource()!=0x08);}
}

二、无刷直流电机的基本工作原理

无刷直流电机简介

    无刷直流电机,英语缩写为BLDC(Brushless Direct Current Motor)。电机的定子是线圈,或者叫绕组。转子是永磁体,就是磁铁 。根据转子的位置,利用单片机来控制每个线圈的通电,使线圈产生的磁场变化,从而不断在前面勾引转子让转子转动,这就是无刷直流电机的转动原理。下面深入一下。

无刷直流电机的结构

    首先先从最基本的线圈说起。如下图。可以将线圈理解成长得像弹簧一样的东西。根据初中学过的右手螺旋法则可知,当电流从该线圈的上到下流过的时候,线圈上面的极性为N,下面的极性为S。

    现在再弄一根这样的线圈。然后摆弄一下位置。这样如果电流通过的话,就能像有两个电磁铁一样。

    再弄一根,就可以构成电机的三相绕组。

    再加上永磁体做成的转子,就是一个无刷直流电动机了。

无刷直流电机的电流换向电路

    无刷直流电机之所以既只用直流电,又不用电刷,是因为外部有个电路来专门控制它各线圈的通电。这个电流换向电路最主要的部件是FET(场效应晶体管,Field-Effect Transitor)。可以把FET看作是开关。下图将FET标为AT(A相Top),AB(A相Bottom),BT,BB,CT,CB。FET的“开合”是由单片机控制的。

用霍尔传感器确认转子位置

    霍尔传感器通过霍尔效应(Hall Effect),能检测出磁场强度的变化。根据高中物理所学的左手定则(用来判断带电导体在磁场中的受力方向),在霍尔传感器所在的回路中,磁场使带电粒子的运动发生偏转,带电粒子“撞到”霍尔传感器的两边,产生电位差。这时就可以用电压计接到霍尔传感器的两边,检测出这种电压变化,从而检测出磁场强度的变化,原理如下图所示。

电气角度和机械角度关系

    虽然在这里插入这么个小知识有点怪,但我还是觉得有必要的,因为我觉得当时学的时候不太好理解。在这里配合霍尔传感器的实例说可能好懂一点。机械角度就是电动机转子实际转过的角度。电气角度和机械角度的关系与转子的极对数有关。​​​​​​​​​​​​​​

电气角度 = 极对数 x 机械角度

    因为实际上线圈生成的磁场要吸引的是转子的磁极。所以对于电机的转动控制来说,我们只关心电气角度就好。

怎样控制无刷直流电机的转速?

    线圈两端的电压越大,通过线圈的电流越大,生成磁场越强,转子转动得就越快。因为接的电源是直流的,所以我们通常用PWM(Pulse Width Modulation,脉冲宽度调制)来控制线圈两端电压的大小。PWM的简单原理如下。

所以给无刷直流电机通电的时候,用单片机产生的PWM不断地控制FET的开合,能使线圈反复处于通电断电,通电断电的状态。通电时间长(Duty大),线圈两端的等效电压就大,产生的磁场强度就强,转子转动就快;通电时间短(Duty小),线圈两端的等效电压就小,产生的磁场强度就弱,转子转动就慢。

    PWM波形接到FET的Gate(门极)上,控制FET的开合。假设Gate上的电压为高时,FET闭合导通;Gate上的电压为低时,FET断开不通电。

    而且同一相上的上下两个FET须由反相的PWM波形控制,以防止上下两个FET同时导通,造成电流不通过电机而上下相同,造成短路。

    无刷直流电机的关键有三点:

  • 线圈绕组电流的换向顺序。电流的换向顺序决定了由线圈产生的磁场的旋转方向,从而决定了转子的转动方向

  • 霍尔传感器或其它手段来估计永磁体转子所处的位置,用于决定电流什么时候换向

  • 使用单片机产生的PWM波形来控制电机绕组的通电时间,来控制转子转动的速度

三、零欧姆电阻的使用技巧

   零欧姆电阻又称为跨接电阻器,是一种特殊用途的电阻,0欧姆电阻的并非真正的阻值为零,欧姆电阻实际是电阻值很小的电阻。

    电路板设计中两点不能用印刷电路连接,常在正面用跨线连接,这在普通板中经常看到,为了让自动贴片机和自动插件机正常工作,用零电阻代替跨线。

  上图是用在单面PCB板上做跨线的0欧姆电阻。

    零欧姆电阻的作用总结可以包括以下作用:

  • 在电路中没有任何功能,只是在PCB上为了调试方便或兼容设计等原因。

  • 可作跳线使用,避免用跳针造成的高频干扰(成为天线)

  • 在匹配电路参数不确定的时候,以0欧姆代替,实际调试的时候,确定参数,再以具体数值的元件代替。

  • 0欧姆电阻实际是电阻值很小的电阻,想测某部分电路的耗电流的时候,接0欧姆电阻,接上电流表,这样方便测耗电流,可用于测量大电流。

上图是用在单面PCB板上做跨线的0欧姆电阻。

  • 在布线时,如果实在布不过去了,也可以加一个0欧的电阻。

  • 在高频信号下,充当电感或电容。(与外部电路特性有关)电感用,主要是解决EMC问题。如地与地,电源和IC Pin间。

  • 单点接地(指保护接地、工作接地、直流接地在设备上相互分开,各自成为独立系统。)

    做电路保护,充当低成本熔丝(圈圈USB电路中以0欧0603电阻充当USB过流保护)由于PCB上走线的熔断电流较大,如果发生短路过流等故障时,很难熔断,可能会带来更大的事故。由于0欧电阻电流承受能力比较弱(其实0欧电阻也是有一定的电阻的,只是很小而已),过流时就先将0欧电阻熔断了,从而将电路断开,防止了更大事故的发生。有时也会用一些阻值为零点几或者几欧的小电阻来做保险丝。不过不太推荐这样来用,但有些厂商为了节约成本,就用此将就了。

 在数字和模拟等混合电路中,往往要求两个地分开,并且单点连接,相关文章:认识地弹(地噪声)。我们可以用一个0欧的电阻来连接这两个地,而不是直接连在一起。这样做的好处就是,地线被分成了两个网络,在大面积铺铜等处理时,就会方便得多。附带提示一下,这样的场合,有时也会用电感或者磁珠等来连接。

    配置电路,一般产品上不要出现跳线和拨码开关。有时用户会乱动设置,易引起误会,为了减少维护费用,应用0欧电阻代替跳线等焊在板子上,相关文章:0欧电阻在电路中有妙用。

    零欧姆电阻可以承受多少电流?

    设计电路经常要用零欧姆电容,一般根据线路电流来选择电阻额定功率,那0欧姆一般选多少合适?

    一般的0欧姆电阻的实际阻值在50毫欧左右+-5%的偏差。所以根据额定功率,你就可以计算出来,它的额定电流了。

  • 0402 1/16W:1/16=I*I*0.05 即I=1.118A;

  • 0603 1/8W:1/8=I*I*0.05 即I=1.58A;

  • 0805 1/4W:1/4=I*I*0.05 即I=2.236A;

    对于每种封装的O欧姆电阻具体可以通过多大的电流,还需要根据电阻在PCB板上的散热情况来决定。

    下面分别测试了0603, 0805, 1206三种封装下,通过的电流和电阻两端之间的电压的关系。可以看到三种封装的电阻都在电流实际超过6A之后,电压开始快速上升。

    上图是在测试0欧姆电阻最大流经电流。

    这说明电阻的温度也急剧增加,导致功耗也大幅度增加。0603电阻在电流增加到11.5A时烧毁,0805电阻在电流增加到12A时烧断,1206的电阻在12A时没有烧毁。

   上图是0603封装0欧姆电阻电流与电压之间的曲线。

    上图是0805封装0欧姆电阻电流与电压之间的曲线。

    上图是1206封装0姆电阻电流与电压之间的曲线。

四、射频中的非线性

在我们常规的认识里面,射频无源器件都是线性器件,耦合器的耦合度,滤波器的损耗和衰减,天线的增益等等,我们仅需在功率的dBm格式中加或者减去这些器件的相应dB 值就可以。

在时分双工TDD系统中,收发靠时间来分开,发射链路的互调也没有以往在频分双工FDD中那么受人关注。

安逸久了,以至于慢慢淡忘了曾经受到的痛苦。尤其是在FDD滤波器生产中无源互调的那些磨难,痛苦到只能用玄学来解释这些PIM的来源,以至于有一些无神论不是那么坚定的人有了烧香拜佛求助的念头。

现在的射频工程师确实比以往幸福了很多。

在《无源互调干扰导论》这本书中,介绍了在卫星通信中因PIM产物影响而发生故障的例子:

美国舰队通信卫星FLTSTCOM的3阶,美国海事卫星MARISAR的13阶,欧洲国际通信卫星V号IS-V的27阶,甚至欧洲海事卫星MARECS的43阶 PIM 产物落在了接收通带引起干扰,一度影响了一些国外卫星系统的研发进展和使用。

3阶,5阶,7阶的影响比较大,我们比较容易理解,27阶和43阶都要考虑到是不是有点过头了?

所以,在射频设计中,任何时候的掉以轻心都有可能带来意想不到的损失。

那么无源互调的来源是什么?又该如何解决呢?我们今天一起来探讨一下。

 互调产物的数学解释 

在我们学习《信号与系统》这本书的时候,有一个比较重要的概念——线性时不变系统 LTI。

线性时不变系统要求一个信号通过这个系统时,可以放大,缩小,延时,但是信号的基本特征不变,从数学上要满足齐次性,叠加性和时不变性,下图给了比较生动的解释。

这个构成了我们通信的数学基础,也是所有通信人梦寐以求能达到的效果——所有信息能够无失真的传输。

说的再简单一点就是这个系统的输出y是输入x的一次函数,用高等数学来解释就是函数的一阶导数为常数。

在线性时不变这个假设的舞台上,我们肆意狂舞,忘却了这一切都想贾宝玉的太虚幻境一般虚无缥缈,非线性才是这个世界的常态。

任何的变化都具有不确定性,量与量之间的关系都不是简单的线性关系。

来,补交数学作业了!

同时呢,假设输入信号为最简单的两个不同频率的余弦信号的线性组合

简直惨不忍睹啊,进去两个频率的信号,出来了一堆,而且还是简略版的非线性。那要是标准非线性不是出来的更多。

心情稍微平复一下,我们捋一下这个产物都有什么?

1,靠近直流的频率:  w1-w2, DC

2,靠近输入信号的频率:w1,w2,2w1-w2,2w2-w1,

3,二阶谐波的频率:2w1,2w2

4,三阶谐波附近的频率:3w1,3w2,2w1+w2,2w2+w1

放到频域里面如下图所示:

通常情况下,2w1-w2和2w2-w1这两个互调信号距离主信号交近,会造成带内临近信道干扰,是射频设计中常常会注意到的项,其他项距离主信号比较远,对于有源部分产生的互调产物,可在后端加滤波器进行滤除,但是如果是无源滤波器和天线产生的互调产物,就无能为力了。

 互调产物的物理机理 

对于有源电路部分,非线性的解释比较充分,研究的也比较透彻。比如混合器,本身就是利用了电路的非线性完成调制信号和载波信号混频的功能;而对于功率放大器,为了追求更高的效率,常常工作在晶体管的饱和区,非线性带来的增益的一点点压缩,也就导致了输出信号和输入信号的非线性关系。

而无源器件的非线性就更加奇妙了,以至于有些时候,人们只能求助于玄学了。但是随着人们研究的深入,无源非线性的物理机理也慢慢呈现在我们的眼前。无源器件的非线性主要可分为材料非线性和接触非线性

材料的非线性现象包括以下几个方面:

1,电介质薄层的电子隧道效应:比如在铝材料表面的氧化铝薄层就有这种电子隧道效应。

2,铁磁效应:铁磁材料有很高的磁导率,并且随着磁场做非线性变化,具有磁滞效应;常见的铁磁材料包括铁,有磁钢,钴,镍等,都是在射频无源器件设计中应该避免用到的;

3,电致伸缩,即电场的非线性变化,比如产生于聚四氟乙烯PTFE电介质中的电致伸缩会对同轴电缆中的PIM有所贡献;

4,磁阻,磁场引起金属导体电阻的变化;

5,微放电效应,由于强电场产生的离子气体而引起二次电子倍增,如在微狭缝之间和跨越金属中砂眼的微放电;

6,电介质击穿等。

当然还有空间电荷效应,离子导电,热离子发射效应,内部肖特基效应等,都会引起无源器件的非线性,进而产生互调信号。

 接触非线性 

接触非线性主要包括材料结构和老化引起的非线性

1,材料结构引起的非线性主要包括:不同零部件的安装,比如,谐振器,连接器,调谐螺钉等,还有材料结构折弯产生的微裂缝等。其产生机理主要包括接触面不良接触引起的机械效应和电子效应。

2,老化引起的非线性,主要是指随着时间的增加,接触面的松动或者滑动都会引起接触的不良,另外金属氧化物的产生,会导致更多的非线性产生。

 总 结 

在射频设计中,非线性才是常态,如何处理非线性导致的问题,是考究射频工程师设计功底的一道压轴题。但是常态并不意味着一定会有影响,尽可能的去减小它的影响才是我们应该做的。

有果必有因,遇到问题,先尝试着找到问题的根,然后解决方法就应运而生了。

这篇关于嵌入式分享合集164的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/387750

相关文章

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Python中列表的高级索引技巧分享

《Python中列表的高级索引技巧分享》列表是Python中最常用的数据结构之一,它允许你存储多个元素,并且可以通过索引来访问这些元素,本文将带你深入了解Python列表的高级索引技巧,希望对... 目录1.基本索引2.切片3.负数索引切片4.步长5.多维列表6.列表解析7.切片赋值8.删除元素9.反转列表

Python中处理NaN值的技巧分享

《Python中处理NaN值的技巧分享》在数据科学和数据分析领域,NaN(NotaNumber)是一个常见的概念,它表示一个缺失或未定义的数值,在Python中,尤其是在使用pandas库处理数据时,... 目录NaN 值的来源和影响使用 pandas 的 isna()和 isnull()函数直接比较 Na

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

cf 164 C 费用流

给你n个任务,k个机器,n个任务的起始时间,持续时间,完成任务的获利 每个机器可以完成任何一项任务,但是同一时刻只能完成一项任务,一旦某台机器在完成某项任务时,直到任务结束,这台机器都不能去做其他任务 最后问你当获利最大时,应该安排那些机器工作,即输出方案 具体建图方法: 新建源汇S T‘ 对任务按照起始时间s按升序排序 拆点: u 向 u'连一条边 容量为 1 费用为 -c,