dql2016

  • 2023-11-27
  • 回复了主题帖: 又一RTOS及组建开源啦!!免费商用,有想玩的吗?

    这个就无敌了,大杂烩的掘墓者

  • 2023-11-21
  • 发表了主题帖: 【DigiKey“智造万物,快乐不停”创意大赛】3、实现串口发送数据到matlab

    首先实现将串口数据发送到matlab进行后续分析,后续再研究通过以太网等更加高速的方法。 matlab测试代码 %stopasync(arduinoObj); %fclose(arduinoObj); %delete(arduinoObj); arduinoObj = serialport("COM6",115200,ByteOrder="big-endian") %configureTerminator(arduinoObj,"CR/LF"); flush(arduinoObj); %准备 UserData 属性来存储 Arduino 数据。结构体的 Data 字段保存正弦波值,Count 字段保存正弦波的 x 轴值。 arduinoObj.UserData = struct("Data",[],"Count",1) %创建一个回调函数 readSineWaveData,它读取前 1000 个以 ASCII 字符结尾的正弦波数据点并绘制结果。 %configureCallback(arduinoObj,"terminator",@readSineWaveData); configureCallback(arduinoObj,"byte",256*4,@readSineWaveData) function readSineWaveData(src, ~) % Read the ASCII data from the serialport object. data = read(src,256,"uint32"); disp(num2str(data)); % Convert the string data to numeric type and save it in the UserData % property of the serialport object. %src.UserData.Data(end+1) = str2double(data); % Update the Count value of the serialport object. %src.UserData.Count = src.UserData.Count + 1; % If 1001 data points have been collected from the Arduino, switch off the % callbacks and plot the data. %if src.UserData.Count > 52 %configureCallback(src, "off"); %plot(src.UserData.Data(2:end)); %end end  2023版本matlab的串口通信使用非常方便,比以前的智能多了,可以直接选数据大小端        

  • 2023-11-13
  • 上传了资料: Keil.STM32U5xx_DFP.2.1.0

  • 2023-11-10
  • 发表了主题帖: 【DigiKey“智造万物,快乐不停”创意大赛】2、扩展板的设计

    本次大赛设计了arduino接口的扩展板,各个电路模块均采用模块化的设计,方便DIY玩法。  

  • 2023-11-05
  • 发表了主题帖: 【MSPM0L1306 LaunchPad】8、pwm呼吸灯

    本帖最后由 dql2016 于 2023-11-5 22:02 编辑 呼吸灯是很多产品常见的设计,尤其是低端产品没有液晶显示屏通过LED来显示工作状态。 使用CCS配置PWM输出十分简单,首先选择例程:     看看demo说明     PWM的配置,主要是定时器时钟和分频系数、装载值的设置:   输出管脚连接了LED:   程序,十分简洁易懂: #include "ti_msp_dl_config.h" int pwm_count = 1800; // initial ccr count based on 10% duty cycle int dc = 10; // initialized to 10 % duty cycle int mode = 1; // 1 = up (will indicate you need to increase dc), 0 = down (will // decrease dc) int main(void) { SYSCFG_DL_init(); NVIC_EnableIRQ(PWM_0_INST_INT_IRQN); DL_TimerG_startCounter(PWM_0_INST); while (1) { __WFI(); } } void PWM_0_INST_IRQHandler(void) { switch (DL_TimerG_getPendingInterrupt(PWM_0_INST)) { case DL_TIMER_IIDX_LOAD: if (dc <= 10) { mode = 1; } // if reached lowest dc (10%), increase dc else if (dc >= 90) { mode = 0; } // if reached highest dc (90%), decrease dc if (mode) { pwm_count -= 20; dc += 1; } // up if (!mode) { pwm_count += 20; dc -= 1; } // down DL_TimerG_setCaptureCompareValue(PWM_0_INST, pwm_count, DL_TIMER_CC_1_INDEX); // update ccr1 value break; default: break; } } 效果:  

  • 发表了主题帖: 【MSPM0L1306 LaunchPad】7、pwm的应用

    MSPM0L1306 内置了四个 16 位通用计时器,每个计时器具有两个捕 捉/比较寄存器,支持待机模式下的低功耗运 行,总共支持 8 个 PWM 通道,可以通过产生SPWM信号经过低通滤波后得到正弦信号。定时器主要特性如下: 打开CCS,选择PWM例程:   PWM的配置,十分简单:   外部输出管脚配置:   程序说明,通过查SPWM正弦表方式,定时输出PWM值: #include "ti_msp_dl_config.h" /* Array of 128 samples to select duty cycles to generate sine waveform for 1024 Period count (10 bit DAC resolution) */ #define ARRAY_SIZE 128 uint16_t gSine128[ARRAY_SIZE] = { 512,537,562,587,611,636,660,684, 707,730,753,774,796,816,836,855, 873,890,907,922,937,950,963,974, 984,993,1001,1008,1013,1017,1021,1022, 1023,1022,1021,1017,1013,1008,1001,993, 984,974,963,950,937,922,907,890, 873,855,836,816,796,774,753,730, 707,684,660,636,611,587,562,537, 512,486,461,436,412,387,363,339, 316,293,270,249,227,207,187,168, 150,133,116,101,86,73,60,49, 39,30,22,15,10,6,2,1, 0,1,2,6,10,15,22,30, 39,49,60,73,86,101,116,133, 150,168,187,207,227,249,270,293, 316,339,363,387,412,436,461,486}; /* Counter used to cycle through sine array */ volatile uint32_t gSineCounter = 0; int main(void) { SYSCFG_DL_init(); /* Enable PWM interrupts */ NVIC_EnableIRQ(PWM_0_INST_INT_IRQN); /* Start PWM counter */ DL_TimerG_startCounter(PWM_0_INST); while(1){ __WFI(); } } void PWM_0_INST_IRQHandler(void){ switch (DL_TimerG_getPendingInterrupt(PWM_0_INST)){ case DL_TIMERG_IIDX_CC0_DN: /* Interrupt on CC0 Down Event */ /* Set new Duty Cycle based on sine array sample value */ DL_TimerG_setCaptureCompareValue(PWM_0_INST, gSine128[gSineCounter%128], DL_TIMER_CC_0_INDEX); /* Increment gSineCounter value */ gSineCounter++; break; default: break; } } PA10脚原始输出信号如下:      

  • 2023-11-04
  • 回复了主题帖: 求国产低噪声负输入LDO

    秦天qintian0303 发表于 2023-11-4 09:31 负电压一般不是直接用电荷泵了吗?  
    纹波大,后面挂LDO好点

  • 回复了主题帖: 公司里的两个极限卷王

    还不换?

  • 2023-11-03
  • 回复了主题帖: 〖碎碎念〗良心、责任与苦差

    世界上只有一种病:穷病

  • 回复了主题帖: 46“万里”树莓派小车——PicoW学习(PWM、定时器)

    这玩意咋不用arduino或者micropython玩玩,很方便,比C简单

  • 发表了主题帖: 【得捷电子Follow me第2期】自定义任务:esp32控制放大器

    在第二期的活动中为了凑单买了XIAO ESP32C3,支持arduino开发,十分方便,尺寸也十分的mini,板子带了锂电池充电芯片,可玩性非常高。   通过SPI接口驱动AD5270这款数字电位器,来调整仪表放大器的增益,从而实现程控增益,测试代码如下: // AD5270 commands - new digital potentiometer #define CMD_WR_RDAC 0x01 #define CMD_RD_RDAC 0x02 #define CMD_ST_RDAC 0x03 #define CMD_RST 0x04 #define CMD_RD_MEM 0x05 #define CMD_RD_ADDR 0x06 #define CMD_WR_CTRL 0x07 #define CMD_RD_CTRL 0x08 #define CMD_SHTDN 0x09 void vspi_write_word(const int chip_select, uint16_t data_to_send, const uint8_t bit_order, const uint8_t mode) { vspi->beginTransaction(SPISettings(SPI_FREQ_FAST, bit_order, mode)); digitalWrite(chip_select, LOW); //pull SS slow to prep other end for transfer vspi->transfer16(data_to_send); digitalWrite(chip_select, HIGH); //pull ss high to signify end of data transfer vspi->endTransaction(); } /* Write a 4-bit command and a 10-bit data word */ void AD5270_Write(const int chip_select, uint8_t cmd, uint16_t data){ uint16_t data_word = ((cmd & 0x0F) << 10) | (data & 0x03FF); vspi_write_word(chip_select, data_word, MSBFIRST, SPI_MODE1); } /* Enable/disable rheostat value changes */ void AD5270_LockUnlock(const int chip_select, uint8_t lock){ AD5270_Write(chip_select, CMD_WR_CTRL, lock ? 0 : 0x002); } /* Enable/disable hardware shutdown */ void AD5270_Shutdown(const int chip_select, uint8_t shutdown){ AD5270_Write(chip_select, CMD_SHTDN, shutdown ? 1 : 0); } /* Set the value of the digital rheostat - range is 0-0x3FF (0-100kOhm) */ void AD5270_Set(const int chip_select, uint16_t val) { AD5270_Write(chip_select, CMD_WR_RDAC, val); } #define CHIP_SEL_MEAS 10 // Chip select pin for measuring digital rheostat potentiometer void setup() { // put your setup code here, to run once: // Set voltage measurement gain to 1 (maximum current (5V pk-pk) must be within ADC range) AD5270_Shutdown(CHIP_SEL_MEAS, 1); AD5270_Set(CHIP_SEL_MEAS, 100); } void loop() { // put your main code here, to run repeatedly: }     开发板支持wifi功能,可以实现分布式的数据采集,非常强大。    [localvideo]8f305406291505a61886a3816a379689[/localvideo]    

  • 发表了主题帖: 【MSPM0L1306 LaunchPad】6、adc简单使用

    MSPM0L1306内置一个ADC,支持10个外部通道,12位分辨率,单端输入,采样率高达1.68MSPS,采集一些简单的模拟输出传感器信号足够使用了。 ADC支持1个内部温度测量通道,支持连接到内部运算放大器,十分强大,还支持外部参考电压输入以提高精度。主要特性在官方的数据手册介绍的十分详细了:         打开CCS,新建一个工程     选择adc例子,在它基础上修改   例子说明 简单修改,支持printf输出       上面分别是接到3.3V个GND输出效果          

  • 回复了主题帖: 来看拆解!是怎样的智商税产品让管管大半夜狂笑出声

    说明人傻钱多的人挺多的:)

  • 回复了主题帖: 先进大厂赚钱,再考公务员是当下最优的选择吗?

    这群人带坏了风气。赚钱的时候使劲卷

  • 2023-10-31
  • 发表了主题帖: 【玄铁杯第三届RISC-V应用创新大赛】1、开箱

    很高兴参与这个活动,体验国产派。 首先放上官方的板卡介绍: https://wiki.sipeed.com/hardware/zh/lichee/th1520/lpi4a/1_intro.html 后续会经常访问官方,学习教程、避坑。 开发板包装十分nice,贴心的使用了塑料盒,要是附带一个壳子就完美了   板卡正面,各种高端接口一应俱全   装上散热风扇 来自官方的介绍,可见是对标树莓派4的存在: LicheePi 4A 是基于 Lichee Module 4A 核心板的 高性能 RISC-V Linux 开发板,以 TH1520 为主控核心(4xC910@1.85G, RV64GCV,4TOPS@Int8 NPU, 50GFLOP GPU),板载最大 16GB 64bit LPDDR4X,128GB eMMC,支持 HDMI+MIPI 双4K 显示输出,支持 4K 摄像头接入,双千兆网口(其中一个支持POE供电)和 4 个 USB3.0 接口,多种音频输入输出(由专用 C906 核心处理)。LicheePi 4A 是截止目前(2023Q2)为止最强的 RISC-V SBC。性能约为上一代 RISC-V SBC VisionFive2的2倍;未开启专用指令集加速的情况下,性能逼近基于 ARM A72 的树莓派 4,在开启相关指令集加速的情况下,可以与树莓派 4 持平。而且最高具备 16GB 超大内存,是树莓派 4 最高配置 8GB 内存的两倍! 基础参数# 主控参数 主控芯片 TH1520 CPU处理器 RISC-V 64GCV C910*4@1.85GHz · 每核支持 64KB I cache 和 64KB D Cache · 四核共享 1MB L2 Cache · 支持 TEE 和 REE,TEE/REE 支持核数启动时可配置 · 支持自定义且接口兼容 RISC-V 的多核调试框架 · 独立电源域,支持 DVFS 图形处理器 · OpenCL 1.1/1.2/2.0 · OpenGL ES 3.0/3.1/3.2 · Vulkan 1.1/1.2 · Android NN HAL NPU处理器 支持 4TOPS@INT8 通用 NNA 算力,主频 1GHz · 支持 TensorFlow、ONNX、Caffe · 支持 CNN、RNN、DNN 等 视频解码器 实时解码器,支持 H.265/H.264/VP9/8/7/6/AVS/AVS+/AVS2.0/VC1/MPEG4 · 支持 H.264 BP/MP/HP@level 5.1 解码,最大 4K 分辨率 · 支持 H.265/HEVC Main Profile@level 5.1 解码,最大 4K 分辨率 · 支持 VP9 Profile-2 解码,最大 4K 分辨率 · 支持 AVS2.0 解码,最大 4K 分辨率 · 支持 VP6/7/8/AVS/AVS+/VC1/MPEG4 解码,最大 1920x1080 分辨率 · 解码性能最大 4K@75fps 视频编码器 · 支持 H.264 BP/MP/HP@level4.2 编码,最大 4K 分辨率 · 支持 H.265/HEVC Main Profile 编码,最大 4K 分辨率 · 仅支持 I 帧和 P 帧 · 编码性能最大 4K@40fps 硬件特性 RAM · 8GB 64bits LPDDR4X · 16GB 64bits LPDDR4X 存储 · eMMC: 可选 空贴、 8G、 32G、 128G · 支持 TF 卡 以太网 · 2 x 千兆以太网接口,可选 POE USB · USB3.0 x 4 · USB2.0 x 1(仅用于烧录) 音频接口 · 1 x 3.5mm 耳机接口 · 一个扬声器接口 · 两个板载麦克风 显示接口 · 1 x HDMI2.0 · 1 x 4-lane MIPI DSI 摄像头接口 · 2 x 2-lane MIPI CSI · 1 x 4-lane MIPI CSI GPIO · UART · IIC · SPI   虽然硬件配置上比树莓派4优秀一些,但是软件生态上肯定是比不过的,但我相信假以时日,国产会越来越好!支持国产!

  • 回复了主题帖: 【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A+003打印外壳

    打印外壳多少刀

  • 2023-10-29
  • 发表了主题帖: 【MSPM0L1306 LaunchPad】5、串口的配置应用

    开发板串口连接到了调试器的虚拟串口:     创建新工程   选择串口例程,可以看到外设例程非常丰富 例程说明,说明了使用方法和开发板跳冒的设置,非常详细   串口的配置如下   主函数,例子是需要将收发管脚短接,成功就会LED闪烁 稍微修改,测试串口发送数据   为了方便使用,需要将printf重映射到串口,关闭串口的fifo配置 重写fputc函数接口,输出到串口0    测试效果:ccs自带串口助手,十分方便 完整代码如下:  #include "ti_msp_dl_config.h" #include <stdio.h> int fputc(int ch, FILE *f) { DL_UART_Main_transmitDataBlocking(UART_0_INST,(uint8_t)ch); return ch; } int main(void) { SYSCFG_DL_init(); /* Set LED to indicate start of transfer */ DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN); while (1) { printf("hello mspm0\n"); DL_GPIO_togglePins(GPIO_LEDS_PORT,GPIO_LEDS_USER_LED_1_PIN | GPIO_LEDS_USER_TEST_PIN); delay_cycles(5000000); } }  

  • 发表了主题帖: 【NUCLEO-H743ZI】8、stm32cubemx创建threadx工程体验

    ThreadX应该是目前最牛逼的开源RTOS之一了,开源链接:https://github.com/azure-rtos/threadx有了微软大厂的支持,发展前景比其它小众RTOS广阔,官方介绍https://learn.microsoft.com/zh-cn/azure/rtos/threadx/chapter1 STM32现在新出的芯片如U5就提供了ThreadX 内核、文件系统、图形库、USB协议栈、网络协议栈、加解密等全家桶的支持包,其它各个系列陆续支持ThreadX全家桶了,使用ThreadX全家桶相比之前开源大杂烩的方式更加方便, 在STM32CubeMX中可以一键添加ThreadX的支持。STM32适配版开源链接:https://github.com/STMicroelectronics/x-cube-azrtos-h7 STM32官方对threadx的说明:https://wiki.stmicroelectronics.cn/stm32mcu/wiki/Introduction_to_THREADX 摘自官方的介绍: Azure RTOS ThreadX 是专门为嵌入式应用程序设计的高性能实时内核。  ThreadX 的独特功能 与其他实时内核不同,ThreadX 功能多样。通过使用强大的 CISC、RISC 和 DSP 处理器的应用程序,可以轻松地在基于小型微控制器的应用程序之间扩展。 ThreadX 可基于其基础体系结构进行扩展。 因为 ThreadX 服务是作为 C 库实现的,所以只有应用程序实际使用的那些服务被引入了运行时映像。 因此,ThreadX 的实际大小完全由应用程序决定。 对于大多数应用程序,ThreadX 的指令映像的大小在 2 KB 至 15 KB 之间。 picokernel™ 体系结构 ThreadX 服务没有像传统的微内核体系结构那样将内核函数相互层叠,而是直接将其插入核心。 由此产生了最快的上下文切换和服务呼叫性能。 我们将此非分层设计称为 picokernel 体系结构。 ANSI C 源代码 ThreadX 主要是在 ANSI C 中编写的。用户需要少量的汇编语言来定制内核,从而满足基础目标处理器的需求。 此设计使用户可以在很短的时间内(通常在几周内)将 ThreadX 移植到新的处理器系列! 高级技术 下面是 ThreadX 高级技术的亮点。 简单的 picokernel 体系结构 自动扩展(占用空间少) 确定性处理 快速实时性能 抢先式和协作式计划 灵活的线程优先级支持 动态系统对象创建 无限量的系统对象 经过优化的中断处理 抢占阈值 (Preemption-threshold™) 优先级继承 事件链接 (Event-chaining™) 快速软件计时器 运行时内存管理 运行时性能监视 运行时堆栈分析 内置系统跟踪 广泛的处理器支持 广泛的开发工具支持 字节顺序完全中性 在之前配置好的工程基础上修改,首先在第三方软件包选项卡开启ThreadX支持,只勾选内核特性: 然后就会看到ThreadX软件包了,修改ThreadX的内存池大小为10240,这是线程可以申请到的最大内存;勾选生成初始化代码,这样会创建一个默认线程: 将时钟节拍TX_TIMER_TICKS_PER_SECOND改为1000,即系统调度周期是1ms。 修改裸机的Timebase Source为TIM6,因为Systick被RTOS占用了,HAL库里面需要用到这个时钟。   生成的代码结构如下: 在app_threadx.c中添加3个测试线程:分别是控制2个LED闪烁和串口打印数据 /* USER CODE BEGIN Header */ /** ****************************************************************************** * [url=home.php?mod=space&uid=1307177]@File[/url] app_threadx.c * [url=home.php?mod=space&uid=1315547]@author[/url] MCD Application Team * [url=home.php?mod=space&uid=159083]@brief[/url] ThreadX applicative file ****************************************************************************** * [url=home.php?mod=space&uid=1020061]@attention[/url] * * Copyright (c) 2020-2021 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "app_threadx.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "main.h" #include "spi.h" #include "usart.h" #include "gpio.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN PTD */ /* USER CODE END PTD */ /* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */ /* USER CODE END PD */ /* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN PM */ /* USER CODE END PM */ /* Private variables ---------------------------------------------------------*/ TX_THREAD tx_app_thread; /* USER CODE BEGIN PV */ TX_THREAD tx_app_thread2; #define APP_CFG_TASK_USER_IF_STK_SIZE 4096u static uint64_t AppTaskStatStk[APP_CFG_TASK_USER_IF_STK_SIZE/8]; TX_THREAD tx_app_thread3; #define APP_CFG_TASK_USER2_STK_SIZE 4096u static uint64_t App2TaskStatStk[APP_CFG_TASK_USER2_STK_SIZE/8]; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ /** * @brief Application ThreadX Initialization. * @param memory_ptr: memory pointer * @retval int */ UINT App_ThreadX_Init(VOID *memory_ptr) { UINT ret = TX_SUCCESS; TX_BYTE_POOL *byte_pool = (TX_BYTE_POOL*)memory_ptr; /* USER CODE BEGIN App_ThreadX_MEM_POOL */ /* USER CODE END App_ThreadX_MEM_POOL */ CHAR *pointer; /* Allocate the stack for tx app thread */ if (tx_byte_allocate(byte_pool, (VOID**) &pointer, TX_APP_STACK_SIZE, TX_NO_WAIT) != TX_SUCCESS) { return TX_POOL_ERROR; } /* Create tx app thread. */ if (tx_thread_create(&tx_app_thread, "tx app thread", tx_app_thread_entry, 0, pointer, TX_APP_STACK_SIZE, TX_APP_THREAD_PRIO, TX_APP_THREAD_PREEMPTION_THRESHOLD, TX_APP_THREAD_TIME_SLICE, TX_APP_THREAD_AUTO_START) != TX_SUCCESS) { return TX_THREAD_ERROR; } /* USER CODE BEGIN App_ThreadX_Init */ if (tx_thread_create(&tx_app_thread2, "tx2 app thread", tx_app_thread_entry2, 0, &AppTaskStatStk[0], APP_CFG_TASK_USER_IF_STK_SIZE, TX_APP_THREAD_PRIO+1, TX_APP_THREAD_PREEMPTION_THRESHOLD, TX_APP_THREAD_TIME_SLICE, TX_APP_THREAD_AUTO_START) != TX_SUCCESS) { return TX_THREAD_ERROR; } if (tx_thread_create(&tx_app_thread3, "tx3 app thread", tx_app_thread_entry3, 0, &App2TaskStatStk[0], APP_CFG_TASK_USER2_STK_SIZE, TX_APP_THREAD_PRIO+1, TX_APP_THREAD_PREEMPTION_THRESHOLD, TX_APP_THREAD_TIME_SLICE, TX_APP_THREAD_AUTO_START) != TX_SUCCESS) { return TX_THREAD_ERROR; } /* USER CODE END App_ThreadX_Init */ return ret; } /** * @brief Function implementing the tx_app_thread_entry thread. * @param thread_input: Hardcoded to 0. * @retval None */ void tx_app_thread_entry(ULONG thread_input) { /* USER CODE BEGIN tx_app_thread_entry */ while(1){ HAL_GPIO_WritePin (LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET); tx_thread_sleep(100); HAL_GPIO_WritePin (LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET); tx_thread_sleep(100); } /* USER CODE END tx_app_thread_entry */ } /** * @brief Function that implements the kernel's initialization. * @param None * @retval None */ void MX_ThreadX_Init(void) { /* USER CODE BEGIN Before_Kernel_Start */ /* USER CODE END Before_Kernel_Start */ tx_kernel_enter(); /* USER CODE BEGIN Kernel_Start_Error */ /* USER CODE END Kernel_Start_Error */ } /* USER CODE BEGIN 1 */ void tx_app_thread_entry2(ULONG thread_input) { while(1) { HAL_GPIO_WritePin (LD3_GPIO_Port, LD3_Pin, GPIO_PIN_RESET); tx_thread_sleep(1000); HAL_GPIO_WritePin (LD3_GPIO_Port, LD3_Pin, GPIO_PIN_SET); tx_thread_sleep(1000); } } void tx_app_thread_entry3(ULONG thread_input) { float a = 0; while(1) { printf("%u test a=%f\n",tx_time_get(),a); a+=1.3; tx_thread_sleep(1); } } /* USER CODE END 1 */   效果: [localvideo]c9859e6dc3349299b8edda6b05f3b47f[/localvideo]     工程:

  • 回复了主题帖: 【DigiKey“智造万物,快乐不停”创意大赛】 物料开箱 ---SenseCAP Indicator 赏析

    针不错,内置电池吗

  • 2023-10-26
  • 回复了主题帖: 英飞凌版图又扩展了~收购了GaN Systems,成氮化镓龙头

    收购ADI,德州仪器

统计信息

已有574人来访过

  • 芯积分:748
  • 好友:4
  • 主题:259
  • 回复:909
  • 课时:8
  • 资源:59

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言