TC264中断实战:从数据手册到逐飞库的配置与调试指南

TC264中断实战:从数据手册到逐飞库的优先级与嵌套配置 本文以英飞凌TC264车规级MCU为例,深入解析中断机制,涵盖从数据手册核心概念到逐飞库实战配置的全过程。重点阐述了中断优先级(SRPN)的分配策略、中断嵌套的启用与风险管控,并结合摄像头场中断等实例,提供了基于逐飞库的配置步骤与调试技巧,帮助开发者构建稳定可靠的实时嵌入式系统。 阅读详情

1. 中断到底是什么?从生活场景到TC264的实战理解

很多刚接触嵌入式,特别是准备智能车比赛的朋友,一听到“中断”两个字就有点发怵,感觉是底层又复杂的东西。其实,中断这个机制特别贴近我们的生活。想象一下,你正在书桌前专心写代码(这是主程序在运行),突然手机响了(这是一个外部事件),你停下敲键盘,去接电话(这是响应中断),接完电话再回来继续写代码(中断返回,主程序继续)。整个过程,你的工作流被一个更紧急的事件“中断”并妥善处理了。TC264单片机里的中断系统,干的就是这个事儿。

在智能车或者机器人项目里,中断无处不在,而且至关重要。你的摄像头需要在新的一帧图像到来时立刻通知CPU去处理,而不是让CPU傻傻地不停去问“来了没?来了没?”;你的按键需要被按下时立刻响应,实现模式切换或者急停;你还需要一个精准的定时器,每隔固定时间就去执行一些关键任务,比如计算PID控制量、采集传感器数据。这些场景,如果只用主循环轮询,要么反应慢,要么CPU累死效率还低。而中断,就是解决这些问题的“神器”。

TC264作为英飞凌AURIX家族的高性能单片机,其中断系统设计得相当强大和灵活,但也因此带来了一些配置上的复杂性。别担心,我们不需要从零开始去啃每一个寄存器。在逐飞科技提供的底层库支持下,我们可以把重心从“怎么配置寄存器”转移到“怎么用好中断”上来。这篇文章,我就结合自己调车和做项目时踩过的坑,带你走一遍从看数据手册理解原理,到用逐飞库函数轻松配置中断的完整流程。我们的目标很明确:搞懂原理,避开陷阱,写出稳定可靠的中断服务程序。

2. 深入核心:TC264中断机制的三层解剖

要玩转中断,不能只停留在“调用函数”的层面,稍微深入一点理解其工作机制,能让你在调试时心里有底,遇到奇葩问题知道往哪个方向排查。TC264的中断系统,我们可以把它拆解成三层来理解:请求层、路由层和执行层。

2.1 中断请求从哪来?三大源头揭秘

数据手册里说得很清楚,中断请求信号主要有三个来源,这对应着我们实际开发中的三类场景:

  1. 外设中断 (Peripherals):这是最常用的一类。单片机内部集成了大量外设模块,比如定时器(CCU6)、串口(ASC)、ADC模块等。当这些模块完成某项工作或达到某种状态时,就会主动发出中断请求。例如,定时器计时溢出、ADC转换完成、串口收到一字节数据,都会产生这类中断。在智能车上,摄像头(如MT9V03X)的场同步信号(VSYNC)中断就是典型的外设中断,它告诉CPU:“新的一帧图像数据准备好了,快来处理!”

  2. 外部中断 (External):这指的是通过单片机GPIO引脚从外部物理世界引入的中断信号。比如一个按键、一个限位开关、或者另一个芯片发出的通知信号。当引脚上的电平发生跳变(比如从高到低,或从低到高)时,就会触发中断。逐飞库将这类GPIO相关的中断封装在EXTI(外部中断)库中,方便我们配置按键、光电开关等。

  3. 软件中断 (Software):顾名思义,这是由软件指令主动触发的中断。程序可以通过写特定的寄存器,来“模拟”一个中断事件的发生。这在测试中断服务程序、或者在不同任务间进行同步时非常有用。在TC264和逐飞库的语境下,我们常用的“定时中断”(PIT)本质上就是一种由定时器模块产生的、周期性的软件可触发中断,它像是一个精准的闹钟,每隔固定时间就“响”一次。

理解这三类来源,你就能清楚地知道:当我要处理摄像头,我找ERU库;当我要处理按键,我找EXTI库;当我要搞定时任务,我找PIT相关的函数。方向不会错。

2.2 中断路由:SRN与ICU是如何“调度”的?

所有的中断请求,无论来自哪里,都会汇入一个叫做服务请求节点(SRN, Service Request Node) 的“中转站”。你可以把SRN想象成小区的快递柜,每个中断请求是一个快递包裹。

这里有一个非常关键且容易混淆的概念:中断服务提供者(Tos, Type of Service)。数据手册和逐飞库的源码都明确指出,处理一个中断请求的“快递员”可以是两个角色:CPU 或者 DMA。这是什么意思呢?比如,摄像头产生了一帧图像数据,这个数据搬运的工作量很大。如果让CPU来当快递员(中断服务提供者),它就得亲自跑腿,把数据从摄像头接口寄存器搬到内存里,这期间CPU就不能干别的了。但如果让DMA来当快递员,CPU只需要告诉DMA:“把这堆数据从A地址搬到B地址”,然后就可以继续执行主程序,搬数据的脏活累活由DMA这个专职搬运工默默完成,搬完了再通知CPU一下。选择CPU

TC264中断机制解析:从数据手册到逐飞库的实战配置指南 本文详细解析了TC264中断机制,从数据手册的理论基础到逐飞库的实战配置指南。通过智能车比赛中的实际案例,深入探讨了中断源、优先级仲裁及SRN节点的核心概念,并提供了摄像头场中断、GPIO中断和软件定时中断的优化配置方案。文章还总结了中断调试的常见问题与解决方案,帮助开发者高效掌握TC264中断技术。 阅读详情

相关推荐

TC264中断机制深度拆解:CPU和DMA谁干活?数据手册与逐飞库源码对照阅读

本文深入解析TC264中断机制,对比数据手册与逐飞库源码,揭示CPU与DMA双通道设计的优势。通过实例代码展示如何配置中断服务提供者,分析三类中断触发源及优先级管理策略,帮助开发者优化嵌入式系统性能。

weixin_30399821的博客 550

从STM32转战TC264:用逐飞库搞定定时器中断(PIT)和编码器的保姆级避坑指南

本文详细介绍了从STM32转向TC264平台时,如何利用逐飞库实现定时器中断(PIT)和编码器功能。通过对比STM32 HAL库与TC264逐飞库的关键差异,提供定时器中断配置、编码器初始化和数据读取的实战代码示例,帮助开发者快速掌握TC264开发要点,避免常见陷阱。

weixin_31902781的博客 351

编码器在电机控制中的应用实战:TC264与STM32的配置陷阱与性能调优

本文深入探讨编码器在TC264与STM32电机控制中的实战应用,解析硬件配置陷阱与性能调优策略。涵盖编码器接口对比、噪声处理、计数溢出解决方案及中断优化,提供从硬件选型到软件调试的全链路指南,帮助工程师提升系统精度与实时性。

5f4d3s2a1q的博客 712

从STM32 HAL库转战英飞凌TC264:手把手教你搞定PIT定时器中断与正交编码器(逐飞库实战)

本文详细介绍了从STM32 HAL库迁移到英飞凌TC264平台时,如何实现PIT定时器中断与正交编码器的配置与调试。通过对比STM32与TC264的开发差异,提供实战代码示例和常见问题解决方案,帮助开发者快速掌握TC264的逐飞库开发技巧,特别适合嵌入式系统工程师进行平台迁移参考。

weixin_30070339的博客 251

英飞凌TC264串口通信实战:从零配置到数据收发(附完整代码)

本文详细介绍了英飞凌TC264单片机UART串口通信的实战配置与编程。从开发环境搭建、引脚映射、波特率计算等基础配置入手,逐步讲解了阻塞式收发、中断驱动以及环形缓冲区应用等高效方法,并提供了构建稳定数据采集与调试系统的完整代码和实用技巧,帮助开发者快速掌握TC264的串口通信核心技能。

hp777的博客 311

TC264主板V1.0原理图(1).pdf

第十五届飞思卡尔智能车大赛,所用的主板就是TC264,以上的原理图供大家参考希望对大家有帮助啦啦!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

TC264主板资料.zip

TC264主板资料,智能车比赛

英飞凌 Tricore TC26X(TC265/TC264等)单片机iLLD库

英飞凌 Tricore TC26X(TC265/TC264等)单片机的iLLD库,官方版本,比较新。有关Tricore单片机和iLLD的更多内容可以参考我的博客~

TC264主板封装库(全)

本库文件包含了所有在使用逐飞科技TC264母版中用到的封装,已经经过实际使用检验可用,内只包含封装库,不包含其他

tc26xb_ds_v1.1.pdf.zip_TC26X_tc264D数据手册_tc26xb_英飞凌_英飞凌32

英飞凌TC26X系列数据手册 32位单片机 资源丰富 倍频可达到200MHZ

原理图及芯片手册 32_CTLV6

原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手册 32_CTLV6原理图及芯片手

TC264学习(1)

GPIO学习 就是给自己看的,基于LQ的例程学习 /* GPIO模式 */ #define PIN_MODE_OUTPUT IfxPort_Mode_outputPushPullGeneral /*!< 推挽输出 */ #define PIN_MODE_OUTPUT_OD IfxPort_Mode_outputOpenDrainGeneral /*!< 开漏输出 */ #define PIN_MODE_INPUT IfxPort_Mode_inputNoPullDevice /*!< 浮空输入 */ #define

RK3308B开发板WiFi+蓝牙一体模组RTL8821CS驱动移植保姆级教程(含DTS配置与避坑点)

本文提供RK3308B开发板RTL8821CS WiFi+蓝牙模组驱动移植的完整教程,涵盖SDK环境配置、DTS设备树设置、内核编译优化及功能验证全流程。重点解析引脚复用冲突、电源管理等关键配置,并给出常见错误解决方案,帮助开发者快速实现双模通信功能。

weixin_42531163的博客 397

【FPGA】Robei EDA的使用(10)————如何更新EDA的使用license

#海卑而下,能聚众水;学问笃实,以生光辉。 有的时候,有些问题自己通过查找资料解决,宁愿磨难一下,走点弯路,但收获更深刻的认知;不过,有些问题,问一下别人,可能会避免自己耗费过多时间做无用工,这些问题问会的人是极好的。但是怎样把握这个问题的类型,大约只能靠经验了~ (问我为何出此感言,谁叫我纠结了两天的问题,被人家一句话解决,我这个恨啊) ————————————————————正文开始的分割线———————————————— Robei EDA在使用上会有一个注册码,这个license在获取之后,每一次的

Ninquelote的博客 1002

《计算机网络》课程大作业- 《小区局域网的设计和规划》

8.1首先,在满足用户需求方面,通过详细的需求分析,充分考虑了居民和物业管理的不同业务需求。对于居民,无论是日常的高清视频播放、在线游戏、远程办公还是智能家居设备的连接,网络都能提供稳定的高速带宽支持。从有线网络的千兆以太网技术保障稳定的有线连接,到无线网络采用 Wi - Fi 6 技术确保无线覆盖区域的高速和低延迟,满足了居民多样化的娱乐和生活需求。对于物业管理,安防监控系统的实时数据传输、物业办公自动化系统的流畅运行以及社区信息的及时发布等业务,都有针对性的网络设计。

lisangsimida的博客 2598

cadence capture CIS 之使用access创建数据库(.mdb)

cadence capture CIS 之使用access创建数据库(.mdb)准备工作新建数据库 准备工作 1、一台电脑; 2、安装 Microsoft access database; 新建数据库 打开你准备创建数据库的位置,右键单击——》新建——》 Microsoft access database(注意:文件格式要选*.mdb) 打开数据库文件,创建——》表; 对数据表进行编辑,编辑表头、编辑表的内容、增加表的数量; 编辑表头:选中要编辑的表——》表设计 编辑内容:类似于excel添

weixin_42256550的博客 3145

TwinCAT3与Matlab Simulink集成开发:如何快速生成和调试TcCOM模块

本文详细介绍了如何将TwinCAT3与Matlab Simulink进行深度集成,实现从控制算法模型到实时TcCOM模块的高效开发。通过环境搭建、模型配置、代码生成、系统集成与调试的完整流程,工程师可以快速将Simulink算法部署到倍福实时控制平台,大幅缩短开发周期并提升可靠性。

ik67890123的博客 223

S32K144驱动TPS929120避坑实录:从原理图设计到PWM调光漏电流的完整解决流程

本文详细解析了S32K144驱动TPS929120在车规LED驱动中的常见问题与解决方案,重点解决了PWM调光漏电流的行业难题。从原理图设计、FlexWire通信到软件调试,提供了一套完整的工程化避坑指南,特别针对车规MCU应用中的温度漂移、地址冲突等痛点给出了实用建议。

weixin_30872157的博客 560

Python爬虫模拟登录京东并抓取商品数据

京东是一个拥有海量商品数据的电子商务平台。作为爬虫开发者,能够抓取这些数据将为我们提供很多机会进行数据分析、价格预测、市场调研等工作。然而,京东的反爬虫机制非常强大,包括但不限于验证码、动态加载页面、IP封禁等。因此,想要通过Python爬虫抓取京东的数据并不容易。在本文中,我们将从分析京东的登录机制开始,逐步介绍如何使用Python中的各种工具,如。

2201_76125261的博客 1826

黑猫带你学eMMC协议第12篇:生产状态感知(PSA)

1 概述 1.1 什么是PSA Production State Awareness (PSA) 生产状态感知 e•MMC设备可以利用其是否在生产环境中的信息,从而在现场运作时进行不同的操作。 例如,在设备低温焊接(soldering)前,将数据写入emmc,可能导致数据出错,而正在焊接期间写入数据,出错的概率可能会更大。在低温焊接之前,emmc设备可以使用一种特定的内部操作去加载内容,这样就能减少数据出错的概率,而在低温焊接后进行常规的操作就行了。 1.2 psa如何进行工作? PSA存在于emmc5.0

黑猫奥利奥的博客 4256

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: ModelScope实战指南:从模型探索到本地部署的完整流程
下一篇: 利用setEcoMode优化innovus中的ecoAddRepeater批量操作效率
mango
博客等级 码龄27年 427粉丝 1710原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值