完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
g474是M4内核,系统时钟的最大频率是170MHz。系统复位后,选择HSI16作为系统时钟。
(以下文章纯属个人理解,如果有不对的地方还请大佬指点,我会及时修改,必要时删除本文章,防止我误导他人) 编写基础 RCC(Reset and Clock Control) AHB、APB1、APB2最大频率都是170MHz。 时钟树 要想配置时钟首先必须要看明白时钟树。 啊这。。。。我感觉比原来的时钟更人性化了哈,直接搞了个内部48MHz给USB啥的用了,这样就不用考虑怎么配置又有48MHz又相对最快频率啥的了,直接搞到最高频率。 时钟树我就不解释了,就放这了,懂得都懂哈,不懂的康103啥的或者找个没有倍频功能单片机手册啥的康康,可能会更容易上手! PLL 配置时钟精髓就是PLL倍频,因此搞清楚了它就很好解决了。 手册上对PLL配置步骤如下图: 首先通过上面的时钟树也可以看出来PLL的时钟源有两种:HSI、HSE。PLL的分频、倍频配置在RCC_PLLCFGR寄存器中。 配置PLL的过程是: PWR 在不同的工作频率下,对应的电源模式也不一样。 可能是为了满足不同频率下的功耗管理,高时钟对应高内核电压,我使用TI的5529时也有倍频时修改内核电压的的操作。 g474的电源模式与各个时钟频率对应关系如下表: PWR_CR1的VOS[1:0]对应Range2和Range1: 至于Range1的normal模式和boost模式是在PWR_CR5寄存器的R1MODE位配置,R1MODE为0就是boost模式: g474的R1MODE位与SYSCLK的对应关系如下: 手册中还介绍了从range_normal切换到range_boost模式的步骤: FLASH 这个是我原来忽略的地方,原来就配置了PLL和PWR,然后倍频到140MHz就是极限了,后来我反复查阅手册,才发现了原来少了对FLASH的访问比率的配置。(可以看到上面的range_normal切换到range_boost模式步骤里已经提到了修改FLASH访问比率的事,但是由于没看懂是什么意思,还以为是延时1us,因此配置170MHz时候就失败了。) 上面提到range_normal切换到range_boost步骤里有这么一句: 那么就看看这个 FLASH_ACR 的 LATENCY到底是个什么。 查阅手册找到这个寄存器: 可以看到LATENCY在最低位: LATENCY[3:0]:这些位表示SYSCLK(系统时钟)周期与Flash访问时间的比率。 知道了它是干嘛的,那么它到底设置为多少合适呢?如下图所示: 为了正确地从闪存读取数据,等待状态(延迟)的数量必须根据CPU时钟(HCLK)的频率和内部电压范围的设备VCORE被正确地编程在闪存访问控制寄存器(FLASH_ACR)。参考第6.1.5节:动态电压缩放管理。表29显示了等待状态和CPU时钟频率之间的对应关系。 对号入座,我要设置为170MHz,模式为Range 1 Boost模式,那么对应LATENCY值应该为4WS,因此将其配置为4。 FLASH->ACR |= FLASH_ACR_LATENCY_4WS; 配置函数 有了上面的概念就可以进行编写时钟函数了。 步骤如下: 开启HSE(鄙人的板子HSE为8MHz)并确认HSE就绪; 关闭PLL并确认PLL已经关闭; AHB二分频; 配置为range1_boost(默认复位为range1_normal模式); 配置FLASH_ACR的访问时间比率; 配置PLL; 打开PLL并确认PLL就绪; 使能PLL_R; 配置系统时钟为PLL输入,并确认系统时钟就绪; 延时至少1us后切换AHB为不分频。 u8 SYSCLK_170MHz(void) { u16 temp = 0x2000; RCC->CR |= RCC_CR_HSEON; while((!(RCC->CR & RCC_CR_HSERDY))&&(--temp));//等待HSE就绪 if(!temp) { return FAILED; } RCC->CR &= ~RCC_CR_PLLON; temp = 0x2000; while((RCC->CR & RCC_CR_PLLRDY) && (--temp));//等待PLL下线 if(!temp) { return FAILED; } RCC->CFGR = RCC_CFGR_PPRE2_DIV1|RCC_CFGR_PPRE1_DIV2|RCC_CFGR_HPRE_DIV2|RCC_CFGR_SW_HSI; temp = 0x2000; while(--temp);//等待AHB稳定 //RCC->APB1ENR1 |= RCC_APB1ENR1_PWREN; PWR->CR5 &= ~PWR_CR5_R1MODE;//设置为range1_boost FLASH->ACR &= ~FLASH_ACR_LATENCY; FLASH->ACR |= FLASH_ACR_LATENCY_4WS; temp = 0x2000; while(--temp);//等待系统稳定 RCC->PLLCFGR = (85< temp = 0xf000; while((!(RCC->CR & RCC_CR_PLLRDY)) && (--temp));//等待PLL准备就绪 if(!temp) { return FAILED; } RCC->PLLCFGR |= RCC_PLLCFGR_PLLREN; RCC->CFGR |= RCC_CFGR_SW_PLL; temp = 0xf000; while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS);//等待系统设置PLL主时钟完成标志位置位 if(temp) { temp = 0; while(--temp);//等待系统稳定 RCC->CFGR &= ~RCC_CFGR_HPRE;//AHB 不分频 == SYSCLK return SUCCEED; } else { return FAILED; } } 然后就配置结束了,通过定时器验证确实为170MHz。 附录:RCC寄存器 最后: 附上本人写的寄存器配置,方便个人配置,要啥直接删注释就好: //================================RCC->CR======================================== RCC->CR |= 0 //default: 0x0000 0063 // //RCC_CR_PLLRDY //bit25【read only】: PLL Ready // |RCC_CR_PLLON //bit24: 使能PLL。 // |RCC_CR_CSSON //bit19: 时钟安全系统使能。0 OFF ; 1 ON // |RCC_CR_HSEBYP //bit18: 0 HSE晶振不旁路 1 HSE晶振旁路 // //RCC_CR_HSERDY //bit17【read only】: HSE Ready |RCC_CR_HSEON //bit16: 使能HSE // |RCC_CR_HSIRDY //bit10: HSI16时钟准备就绪 // |RCC_CR_HSIKERON //bit09: 停止模式HSI是否启动 // |RCC_CR_HSION //bit08: 1 HSION 0 OFF ; //================================RCC->PLLCFGR ======================================== RCC->PLLCFGR = 0 //default: 0x0000 1000 // |RCC_PLLCFGR_PLLPDIV //bit31-27[4:0]: P 分频 给ADC用 // 00000: PLL “P” clock is controlled by the bit PLLP // 00001: Reserved. // 00010: PLL “P” clock = VCO / 2 // .... // 11111: PLL “P” clock = VCO / 31 // |RCC_PLLCFGR_PLLR //bit26-25[1:0]: 锁相环R 分频 /// // 00: PLLR = 2 // 01: PLLR = 4 // 10: PLLR = 6 // 11: PLLR = 8 // |RCC_PLLCFGR_PLLREN //bit24: PLLR使能 // |RCC_PLLCFGR_PLLQ_0 //bit22-21[1:0]: Q分频,USB用。分频参数与R分频一样 // |RCC_PLLCFGR_PLLQEN //bit20: PLLQ使能 // |RCC_PLLCFGR_PLLP //bit17: P 分频 // 0: PLLP = 7 // 1: PLLP = 17 // |RCC_PLLCFGR_PLLPEN //bit16: PLLP 使能 //----------------------- VCO = 280MHz |(70< // 0000001: PLLN = 1 wrong configuration // ... // 0000111: PLLN = 7 wrong configuration // 0001000: PLLN = 8 // 0001001: PLLN = 9 // ... // 1111111: PLLN = 127 |(1< /// // 0001: PLLM = 2 // 0010: PLLM = 3 // 0011: PLLM = 4 // 0100: PLLM = 5 // 0101: PLLM = 6 // 0110: PLLM = 7 // 0111: PLLM = 8 // 1000: PLLSYSM = 9 // ... // 1111: PLLSYSM= 16 |RCC_PLLCFGR_PLLSRC //bit01-00[1:0]: PLL时钟源选择。 // 00: No clock sent to PLL // 01: No clock sent to PLL // 10: HSI16 clock selected as PLL clock entry /// // 11: HSE clock selected as PLL clock entry ; //================================RCC->CFGR======================================== RCC->CFGR = 0 //default: 0x0000 0005 // |RCC_CFGR_MCOPRE //bit30-28[2:0]: MCO输出时钟分频 // 000: MCO is divided by 1 // 001: MCO is divided by 2 // 010: MCO is divided by 4 // 011: MCO is divided by 8 // 100: MCO is divided by 16 // Others: not allowed // |RCC_CFGR_MCOSEL //bit27-24[3:0]: MCO输出时钟选择 // 0000: MCO output disabled, no clock on MCO // 0001: SYSCLK system clock selected // 0010: Reserved, must be kept at reset value // 0011: HSI16 clock selected // 0100: HSE clock selected // 0101: Main PLL clock selected // 0110: LSI clock selected // 0111: LSE clock selected // 1000: Internal HSI48 clock selected |RCC_CFGR_PPRE2_DIV2 //bit13-11[2:0]: APB2预分频 // 0xx: HCLK not divided // 100: HCLK divided by 2 // 101: HCLK divided by 4 // 110: HCLK divided by 8 // 111: HCLK divided by 16 |RCC_CFGR_PPRE1_DIV4 //bit10-08[2:0]: APB1预分频 // 0xx: HCLK not divided // 100: HCLK divided by 2 // 101: HCLK divided by 4 // 110: HCLK divided by 8 // 111: HCLK divided by 16 // |RCC_CFGR_HPRE //bit07-04[3:0]: AHB预分频(改变core电压之前应该先查看这些时钟频率) // 0xxx: SYSCLK not divided // 1000: SYSCLK divided by 2 // 1001: SYSCLK divided by 4 // 1010: SYSCLK divided by 8 // 1011: SYSCLK divided by 16 // 1100: SYSCLK divided by 64 // 1101: SYSCLK divided by 128 // 1110: SYSCLK divided by 256 // 1111: SYSCLK divided by 512 //RCC_CFGR_SWS //bit03-02[1:0]【read only】:系统时钟源选择状态,该位与SW对应。 |RCC_CFGR_SW //bit01-00[1:0]: 系统时钟源选择。 // 00: Reserved, must be kept at reset value // 01: HSI16 selected as system clock // 10: HSE selected as system clock /// // 11: PLL selected as system clock ; 下面是RCC寄存器: void RCC_Init(void) { //--------------------------------------------------------------------------------------// //---------------------------------------- AHB1 ----------------------------------------// //--------------------------------------------------------------------------------------// RCC->AHB1RSTR |= 0 //default: 0x0000 0000 // |RCC_AHB1RSTR_CRCRST //bit12 // |RCC_AHB1RSTR_FLASHRST //bit08 // |RCC_AHB1RSTR_FMACRST //bit04 // |RCC_AHB1RSTR_CORDICRST //bit03 // |RCC_AHB1RSTR_DMAMUX1RST //bit02 // |RCC_AHB1RSTR_DMA2RST //bit01 // |RCC_AHB1RSTR_DMA1RST //bit00 ; RCC->AHB1RSTR &= 0xffffffff //default: 0x0000 0000 // &~RCC_AHB1RSTR_CRCRST //bit12 // &~RCC_AHB1RSTR_FLASHRST //bit08 // &~RCC_AHB1RSTR_FMACRST //bit04 // &~RCC_AHB1RSTR_CORDICRST //bit03 // &~RCC_AHB1RSTR_DMAMUX1RST //bit02 // &~RCC_AHB1RSTR_DMA2RST //bit01 // &~RCC_AHB1RSTR_DMA1RST //bit00 ; RCC->AHB1ENR |= 0 //default: 0x0000 0100 // |RCC_AHB1ENR_CRCEN //bit12 // |RCC_AHB1ENR_FLASHEN //bit08 // |RCC_AHB1ENR_FMACEN //bit04 // |RCC_AHB1ENR_CORDICEN //bit03 // |RCC_AHB1ENR_DMAMUX1EN //bit02 // |RCC_AHB1ENR_DMA2EN //bit01 // |RCC_AHB1ENR_DMA1EN //bit00 ; //--------------------------------------------------------------------------------------// //---------------------------------------- AHB2 ----------------------------------------// //--------------------------------------------------------------------------------------// RCC->AHB2RSTR |= 0 //defualt: 0x0000 0000 // |RCC_AHB2RSTR_RNGRST //bit26 // |RCC_AHB2RSTR_RNGRST //bit24 // |RCC_AHB2RSTR_DAC4RST //bit19 // |RCC_AHB2RSTR_DAC3RST //bit18 // |RCC_AHB2RSTR_DAC2RST //bit17 // |RCC_AHB2RSTR_DAC1RST //bit16 // |RCC_AHB2RSTR_ADC345RST //bit14 // |RCC_AHB2RSTR_ADC12RST //bit13 // |RCC_AHB2RSTR_GPIOGRST //bit06 // |RCC_AHB2RSTR_GPIOFRST //bit05 // |RCC_AHB2RSTR_GPIOERST //bit04 // |RCC_AHB2RSTR_GPIODRST //bit03 |RCC_AHB2RSTR_GPIOCRST //bit02 // |RCC_AHB2RSTR_GPIOBRST //bit01 // |RCC_AHB2RSTR_GPIOARST //bit00 ; RCC->AHB2RSTR &= 0xffffffff //defualt: 0x0000 0000 // &~RCC_AHB2RSTR_RNGRST //bit26 // &~RCC_AHB2RSTR_RNGRST //bit24 // &~RCC_AHB2RSTR_DAC4RST //bit19 // &~RCC_AHB2RSTR_DAC3RST //bit18 // &~RCC_AHB2RSTR_DAC2RST //bit17 // &~RCC_AHB2RSTR_DAC1RST //bit16 // &~RCC_AHB2RSTR_ADC345RST //bit14 // &~RCC_AHB2RSTR_ADC12RST //bit13 // &~RCC_AHB2RSTR_GPIOGRST //bit06 // &~RCC_AHB2RSTR_GPIOFRST //bit05 // &~RCC_AHB2RSTR_GPIOERST //bit04 // &~RCC_AHB2RSTR_GPIODRST //bit03 &~RCC_AHB2RSTR_GPIOCRST //bit02 // &~RCC_AHB2RSTR_GPIOBRST //bit01 // &~RCC_AHB2RSTR_GPIOARST //bit00 ; RCC->AHB2ENR = 0 //default: 0x0000 0000 // |RCC_AHB2ENR_RNGEN //bit26 // |RCC_AHB2ENR_DAC4EN //bit19 // |RCC_AHB2ENR_DAC3EN //bit18 // |RCC_AHB2ENR_DAC2EN //bit17 // |RCC_AHB2ENR_DAC1EN //bit16 // |RCC_AHB2ENR_ADC345EN //bit14 // |RCC_AHB2ENR_ADC12EN //bit13 // |RCC_AHB2ENR_GPIOGEN //bit06 // |RCC_AHB2ENR_GPIOFEN //bit05 // |RCC_AHB2ENR_GPIOEEN //bit04 // |RCC_AHB2ENR_GPIODEN //bit03 |RCC_AHB2ENR_GPIOCEN //bit02 // |RCC_AHB2ENR_GPIOBEN //bit01 // |RCC_AHB2ENR_GPIOAEN //bit00 ; //--------------------------------------------------------------------------------------// //---------------------------------------- AHB3 ----------------------------------------// //--------------------------------------------------------------------------------------// RCC->AHB3RSTR |= 0 //default:0x0000 0000 // |RCC_AHB3RSTR_QSPIRST //bit08 // |RCC_AHB3RSTR_FMCRST //bit00 ; RCC->AHB3RSTR &= 0xffffffff //default:0x0000 0000 // &~RCC_AHB3RSTR_QSPIRST //bit08 // &~RCC_AHB3RSTR_FMCRST //bit00 ; RCC->AHB3ENR |= 0 //default: 0x0000 0000 // |RCC_AHB3ENR_QSPIEN //bit08 // |RCC_AHB3ENR_FMCEN //bit00 ; //--------------------------------------------------------------------------------------// //---------------------------------------- APB1 ----------------------------------------// //--------------------------------------------------------------------------------------// RCC->APB1RSTR1 |= 0 //default: 0x0000 0000 // |RCC_APB1RSTR1_LPTIM1RST //bit31 // |RCC_APB1RSTR1_I2C3RST //bit30 // |RCC_APB1RSTR1_PWRRST //bit28 // |RCC_APB1RSTR1_FDCANRST //bit25 // |RCC_APB1RSTR1_USBRST //bit23 // |RCC_APB1RSTR1_I2C2RST //bit22 // |RCC_APB1RSTR1_I2C1RST //bit21 // |RCC_APB1RSTR1_UART5RST //bit20 // |RCC_APB1RSTR1_UART4RST //bit19 // |RCC_APB1RSTR1_USART3RST //bit18 // |RCC_APB1RSTR1_USART2RST //bit17 // |RCC_APB1RSTR1_SPI3RST //bit15 // |RCC_APB1RSTR1_SPI2RST //bit14 // |RCC_APB1RSTR1_CRSRST //bit08 |RCC_APB1RSTR1_TIM7RST //bit05 // |RCC_APB1RSTR1_TIM6RST //bit04 // |RCC_APB1RSTR1_TIM5RST //bit03 // |RCC_APB1RSTR1_TIM4RST //bit02 // |RCC_APB1RSTR1_TIM3RST //bit01 // |RCC_APB1RSTR1_TIM2RST //bit00 ; RCC->APB1RSTR1 &= 0xffffffff//default: 0x0000 0000 // &~RCC_APB1RSTR1_LPTIM1RST //bit31 // &~RCC_APB1RSTR1_I2C3RST //bit30 // &~RCC_APB1RSTR1_PWRRST //bit28 // &~RCC_APB1RSTR1_FDCANRST //bit25 // &~RCC_APB1RSTR1_USBRST //bit23 // &~RCC_APB1RSTR1_I2C2RST //bit22 // &~RCC_APB1RSTR1_I2C1RST //bit21 // &~RCC_APB1RSTR1_UART5RST //bit20 // &~RCC_APB1RSTR1_UART4RST //bit19 // &~RCC_APB1RSTR1_USART3RST //bit18 // &~RCC_APB1RSTR1_USART2RST //bit17 // &~RCC_APB1RSTR1_SPI3RST //bit15 // &~RCC_APB1RSTR1_SPI2RST //bit14 // &~RCC_APB1RSTR1_CRSRST //bit08 &~RCC_APB1RSTR1_TIM7RST //bit05 // &~RCC_APB1RSTR1_TIM6RST //bit04 // &~RCC_APB1RSTR1_TIM5RST //bit03 // &~RCC_APB1RSTR1_TIM4RST //bit02 // &~RCC_APB1RSTR1_TIM3RST //bit01 // &~RCC_APB1RSTR1_TIM2RST //bit00 ; RCC->APB1ENR1 |= 0 //default: 0x0000 0400 // |RCC_APB1ENR1_LPTIM1EN //bit31 // |RCC_APB1ENR1_I2C3EN //bit30 // |RCC_APB1ENR1_PWREN //bit28 // |RCC_APB1ENR1_FDCANEN //bit25 // |RCC_APB1ENR1_USBEN //bit23 // |RCC_APB1ENR1_I2C2EN //bit22 // |RCC_APB1ENR1_I2C1EN //bit21 // |RCC_APB1ENR1_UART5EN //bit20 // |RCC_APB1ENR1_UART4EN //bit19 // |RCC_APB1ENR1_USART3EN //bit18 // |RCC_APB1ENR1_USART2EN //bit17 // |RCC_APB1ENR1_SPI3EN //bit15 // |RCC_APB1ENR1_SPI2EN //bit14 // |RCC_APB1ENR1_WWDGEN //bit11 // |RCC_APB1ENR1_RTCAPBEN //bit10 // |RCC_APB1ENR1_CRSEN //bit08 |RCC_APB1ENR1_TIM7EN //bit05 // |RCC_APB1ENR1_TIM6EN //bit04 // |RCC_APB1ENR1_TIM5EN //bit03 // |RCC_APB1ENR1_TIM4EN //bit02 // |RCC_APB1ENR1_TIM3EN //bit01 // |RCC_APB1ENR1_TIM2EN //bit00 ; RCC->APB1RSTR2 |= 0 //default: 0x0000 0000 // |RCC_APB1RSTR2_UCPD1RST //bit08 // |RCC_APB1RSTR2_I2C4RST //bit01 // |RCC_APB1RSTR2_LPUART1RST //bit00 ; RCC->APB1RSTR2 &= 0xffffffff//default: 0x0000 0000 // &~RCC_APB1RSTR2_UCPD1RST //bit08 // &~RCC_APB1RSTR2_I2C4RST //bit01 // &~RCC_APB1RSTR2_LPUART1RST //bit00 ; RCC->APB1ENR2 |= 0 //default: 0x0000 0000 // |RCC_APB1ENR2_UCPD1EN //bit08 // |RCC_APB1ENR2_I2C4EN //bit01 // |RCC_APB1ENR2_LPUART1EN //bit00 ; //--------------------------------------------------------------------------------------// //---------------------------------------- APB2 ----------------------------------------// //--------------------------------------------------------------------------------------// RCC->APB2RSTR |= 0 //default: 0x0000 0000 // |RCC_APB2RSTR_HRTIM1RST //bit26 // |RCC_APB2RSTR_SAI1RST //bit21 // |RCC_APB2RSTR_TIM20RST //bit20 // |RCC_APB2RSTR_TIM17RST //bit18 // |RCC_APB2RSTR_TIM16RST //bit17 // |RCC_APB2RSTR_TIM15RST //bit16 // |RCC_APB2RSTR_SPI4RST //bit15 // |RCC_APB2RSTR_USART1RST //bit14 // |RCC_APB2RSTR_TIM8RST //bit13 // |RCC_APB2RSTR_SPI1RST //bit12 // |RCC_APB2RSTR_TIM1RST //bit11 // |RCC_APB2RSTR_SYSCFGRST //bit00 ; RCC->APB2RSTR &= 0xffffffff //default: 0x0000 0000 // &~RCC_APB2RSTR_HRTIM1RST //bit26 // &~RCC_APB2RSTR_SAI1RST //bit21 // &~RCC_APB2RSTR_TIM20RST //bit20 // &~RCC_APB2RSTR_TIM17RST //bit18 // &~RCC_APB2RSTR_TIM16RST //bit17 // &~RCC_APB2RSTR_TIM15RST //bit16 // &~RCC_APB2RSTR_SPI4RST //bit15 // &~RCC_APB2RSTR_USART1RST //bit14 // &~RCC_APB2RSTR_TIM8RST //bit13 // &~RCC_APB2RSTR_SPI1RST //bit12 // &~RCC_APB2RSTR_TIM1RST //bit11 // &~RCC_APB2RSTR_SYSCFGRST //bit00 ; RCC->APB2ENR |= 0 //default: 0x0000 0000 // |RCC_APB2ENR_HRTIM1EN //bit26 // |RCC_APB2ENR_SAI1EN //bit21 // |RCC_APB2ENR_TIM20EN //bit20 // |RCC_APB2ENR_TIM17EN //bit18 // |RCC_APB2ENR_TIM16EN //bit17 // |RCC_APB2ENR_TIM15EN //bit16 // |RCC_APB2ENR_SPI4EN //bit15 // |RCC_APB2ENR_USART1EN //bit14 // |RCC_APB2ENR_TIM8EN //bit13 // |RCC_APB2ENR_SPI1EN //bit12 // |RCC_APB2ENR_TIM1EN //bit11 // |RCC_APB2ENR_SYSCFGEN //bit00 ; } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1632 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1559 浏览 1 评论
985 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1605 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
655浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
525浏览 3评论
540浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
512浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 18:11 , Processed in 0.818961 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号