CN110750250A - 一种使用宏编译判断io口是否冲突的方法 - Google Patents
一种使用宏编译判断io口是否冲突的方法 Download PDFInfo
- Publication number
- CN110750250A CN110750250A CN201910843841.1A CN201910843841A CN110750250A CN 110750250 A CN110750250 A CN 110750250A CN 201910843841 A CN201910843841 A CN 201910843841A CN 110750250 A CN110750250 A CN 110750250A
- Authority
- CN
- China
- Prior art keywords
- port
- macro
- ports
- computer
- conflict
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 230000002093 peripheral effect Effects 0.000 abstract description 2
- 238000004590 computer program Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种使用宏编译判断IO口是否冲突的方法,属于计算机领域。该方法包括以下步骤:对IO口进行初始化;使用宏定义#define将IO口定义为某个常量;使用宏编译语句;在初始化IO口时,如果IO口被重复初始化,系统不能编译通过。在利用MCU控制步进电机的工控系统中,由于系统需要控制6个步进电机、12个传感器、及各种外设,IO口在硬件上分配完毕后,编程时常常因为对某一个IO口重复初始化而使得系统无法运行。使用该方法后,不会再出现IO口发生重复冲突的现象,同时编译的程序大小也缩小了5%。
Description
技术领域
本发明属于计算机领域,涉及一种使用宏编译判断IO口是否冲突的方法。
背景技术
嵌入式系统需要对MCU的IO口进行配置、设定,对于IO口多达上百个的系统而言,如何高效的维护、管理这些IO口就成了一个令程序员倍感棘手的问题。宏条件编译是C语言等编程语言中常用的一种根据条件判断,选择性的将制定代码编译进系统的技术,可以用来对MCU的IO口进行判断编译。
现有的IO口管理,通常是基于某种开发平台(平台负责IO口管理)或者由程序员手工维护。前一种方式高度依赖于开发平台、通用性较差;后一种方式大大增加了程序员的工作量、而且维护过程中极易犯错却不易察觉。而使用宏条件编译的IO口管理技术是一种通用于某种具体语言的编程技术,跟开发平台无关;另外由于IO口是否发生冲突由代码进行判断,避免了人工判断的易出错性;同时因为使用了条件编译,可以避免将大量无效代码编译进程序,考虑到嵌入式系统的资源有限性(内存有限),该方法能极大的减少程序的内存大小。
发明内容
有鉴于此,本发明的目的在于提供一种使用宏编译判断IO口是否冲突的方法,提供了一种独立于某种具体开发平台的IO口管理方法;解决了程序员在管理、维护MCU的IO口时容易重复定义的问题;使用条件编译,降低了编译程序的内存大小。
为达到上述目的,本发明提供如下技术方案:
一种使用宏编译判断IO口是否冲突的方法,该方法包括以下步骤:
对IO口进行初始化;
使用宏定义#define将IO口定义为某个常量;
使用宏编译语句;
在初始化IO口时,如果IO口被重复初始化,系统不能编译通过。
可选的,所述宏编译语句为C语言中的#if(判断条件)#error(错误打印)#endif。
一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现所述的方法所执行的操作。
一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述的方法。
本发明的有益效果在于:在利用MCU控制步进电机的工控系统中,由于系统需要控制6个步进电机、12个传感器、及各种外设,IO口在硬件上分配完毕后,编程时常常因为对某一个IO口重复初始化而使得系统无法运行。使用该方法后,不会再出现IO口发生重复冲突的现象,同时编译的程序大小也缩小了5%。
本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。
附图说明
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:
图1为本发明的应用场景;
图2为本发明的逻辑流程图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本发明的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若有术语“上”、“下”、“左”、“右”、“前”、“后”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本发明的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
请参阅图1~图X,为一种使用宏编译判断IO口是否冲突的方法。
实际应用场合下,连接的IO口比上图要多得多。在分配完IO口之后,在程序上会对各种IO口进行初始化。但由于IO口数量众多,编写程序时,程序员难免犯错:比如将LED灯的IO口重复分配给光电传感器的IO口。这种错误会导致系统异常,但是从系统上又很难看出问题出在哪。
为此,本发明利用宏编译对IO口的冲突提前进行判断,避免出现系统错误。其具体代码实现举例如下:
#define EXTI_LINE_X
/*中断线编译检查*/
#if((EXTI_LINE_X<0)||(EXTI_LINE_X>16)||(EXTI_LINE_X==EXTI_LINE_Z)||\
(EXTI_LINE_X==EXTI_LINE_A)||(EXTI_LINE_X==
EXTI_LINE_B)||(EXTI_LINE_UrgensStop)||(EXTI_LINE_X==EXTI_LINE_MAINHOTOR))
#error EXTI_LINE_X has problem!
#endif
即是使用宏定义#define将IO口定义为某个常量。然后使用C语言等的宏编译语句:#if(判断条件)#error(错误打印)#endif。程序员在初始化IO口时(将该IO口指定为某个具体功能),如果IO口被重复初始化,系统将不能编译通过。避免了程序员在未知的情况下覆盖掉原定的IO口初始化方案。
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
可选的,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的使用宏编译判断IO口是否冲突的方法和技术编程时,本发明还包括计算机本身。计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (4)
1.一种使用宏编译判断IO口是否冲突的方法,其特征在于:该方法包括以下步骤:
对IO口进行初始化;
使用宏定义#define将IO口定义为某个常量;
使用宏编译语句;
在初始化IO口时,如果IO口被重复初始化,系统不能编译通过。
2.根据权利要求1所述的一种使用宏编译判断IO口是否冲突的方法,其特征在于:所述宏编译语句为C语言中的#if(判断条件)#error(错误打印)#endif。
3.一种电子设备,其特征在于:所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1~2任一项所述的方法所执行的操作。
4.一种计算机可读存储介质,其特征在于:所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行权利要求1~2任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910843841.1A CN110750250A (zh) | 2019-09-06 | 2019-09-06 | 一种使用宏编译判断io口是否冲突的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910843841.1A CN110750250A (zh) | 2019-09-06 | 2019-09-06 | 一种使用宏编译判断io口是否冲突的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110750250A true CN110750250A (zh) | 2020-02-04 |
Family
ID=69276147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910843841.1A Pending CN110750250A (zh) | 2019-09-06 | 2019-09-06 | 一种使用宏编译判断io口是否冲突的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110750250A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101303580A (zh) * | 2008-06-24 | 2008-11-12 | 杭州义益自动化有限公司 | 支持多种cpu构造plc控制器的实现方法 |
CN106843996A (zh) * | 2017-03-08 | 2017-06-13 | 百富计算机技术(深圳)有限公司 | 条件编译预处理方法和装置 |
-
2019
- 2019-09-06 CN CN201910843841.1A patent/CN110750250A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101303580A (zh) * | 2008-06-24 | 2008-11-12 | 杭州义益自动化有限公司 | 支持多种cpu构造plc控制器的实现方法 |
CN106843996A (zh) * | 2017-03-08 | 2017-06-13 | 百富计算机技术(深圳)有限公司 | 条件编译预处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100357882C (zh) | 处理二进制编码的装置、系统和方法 | |
JP2008509483A (ja) | 予期せず/変化するハードウェア環境へのソフトウェアとファームウェアの適応 | |
CN109074336B (zh) | 用于对微控制器内的数据传输进行编程的系统和方法 | |
CN107391368B (zh) | 一种航空机载软件中源代码与目标代码一致性的分析方法 | |
US9886287B2 (en) | Adaptive device driver method and system | |
CN109918081B (zh) | 一种编译方法及编译器 | |
US8347278B2 (en) | Instrumenting a compiled software routine for augmentation | |
CN109933326B (zh) | 改写代码的编译方法、装置及相应终端 | |
JP2013242823A (ja) | 情報処理装置、情報処理方法および制御プログラム | |
CN109582391B (zh) | 一种基于xml的设备树配置方法 | |
JP2009252194A (ja) | データ処理装置、ハードウェアアクセス方法、及びハードウェアアクセスプログラム | |
CN113703781B (zh) | 存储系统接口生成方法、装置、电子设备及可读存储介质 | |
US20180364991A1 (en) | Method and system for preparing code to be executed by programmable control devices | |
CN109507991B (zh) | 一种双轴伺服控制平台调试系统及方法 | |
CN110750250A (zh) | 一种使用宏编译判断io口是否冲突的方法 | |
US7657897B2 (en) | Methods and apparatus for communicating between multiple levels of software components | |
CN114780154B (zh) | 一种兼容不同生产厂家主控板硬件状态的方法 | |
CN115934062A (zh) | 一种工业控制程序开发平台及方法 | |
US11573913B2 (en) | Device proxy and control method | |
KR101019688B1 (ko) | 고레벨 언어 기반 임베디드 시스템 | |
JP6295914B2 (ja) | プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ | |
JP4808016B2 (ja) | マイクロコンピュータの初期化装置および車載用制御装置 | |
CN110244950B (zh) | 一种嵌入式汇编程序生成设备和方法 | |
WO2022068559A1 (zh) | 一种代码处理方法、装置及设备 | |
TWI637277B (zh) | 標準程式語言腳本架構結合虛擬機的控制方法及程式產品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200204 |
|
RJ01 | Rejection of invention patent application after publication |