精华内容
下载资源
问答
  • tiny210 裸机 串口中断方式 适用于tiny210 smart210等s5pv210的开发板测试 串口0 中断方式
  • 查询通信包是否结束,有很多的方式,看过很多,都不够简洁明了,我分享一个我用了几年的查询方式(大家如果有什么好的方式可以与我分享),可以给新手做通信的一些启发,便于移植,同时简单明了:对于使用了操作系统...

    查询通信包是否结束,有很多的方式,看过很多,都不够简洁明了,我分享一个我用了几年的查询方式(大家如果有什么好的方式可以与我分享),可以给新手做通信的一些启发,便于移植,同时简单明了:对于使用了操作系统,直接在线程中查询,裸机就直接使用定时器进行查询。

    比如使用了ucos ii时,我一般会建立一个线程用来通信查询(串口使用DMA,完全无需中断干预,高效)

    while(1)
    	{
    		cnt = UARTx_GetRxCnt(RS485_UART_CH1);											//获取接收数据长度
    		OSTimeDlyHMSM(0,0,0,50);														//延时,等待数据结束
    		if((cnt != 0) && (cnt == UARTx_GetRxCnt(RS485_UART_CH1)))						//收到数据了,并且2次查询到的数据长度一样,判断为帧结束
    		{		
    			//收到数据包后的处理
    			if(cnt>3)
    			{
    				if(CONFIG_HostHandle(UartBuff, cnt, MODBUS_SendData)==FALSE)			//先判断是否为上位机通信
    				{
    					if(MODBUS_SLAVE_Handle(&SlaveHandle, UartBuff, cnt)==TRUE)			//MODBUS 从机通信处理
    					{
    						if(LastWriteRegCnt != SlaveHandle.WriteRegCnt)
    						{
    							LastWriteRegCnt = SlaveHandle.WriteRegCnt;
    							MODBUS_InputReg[7] = MODBUS_HoldReg[0];						//调试模式
    						}
    					}
    				}
    			}
    			UARTx_ClearRxCnt(RS485_UART_CH1);											//清除接收的数据
    		}
    		else																			//2次查询的数据长度不一样,延时,等待数据结束
    		{
    			OSTimeDlyHMSM(0,0,0,50);
    		}	
    	}

    上位机等待通信包结束

    上位机一般作为主机,使用了类似的方法查询数据结束

    DWORD cnt = 0;
    	DWORD TimeOut = 500 / 50;											//超时为800ms
    
    
    	
    		//等待数据返回
    		do
    		{
    			cnt = this->pUART->MYUART_GetRxCnt(this->mUartHandle);		//获取接收到的数据长度
    			Sleep(50);													//延时10ms	
    			if (cnt == this->pUART->MYUART_GetRxCnt(this->mUartHandle))	//完成接收数据了,退出等待
    			{
    				TimeOut--;
    				if ((cnt > 0) && (TimeOut != 0))
    				{
    					if (cnt > 30)
    					{
    						Sleep(200);			//收完后再等待200ms防止CH340这类串口分包导致数据丢失,串口波特率不一样时等待的实际会不一样,大数据包等待的时间会更长
    					}
    					Sleep(20);			//收完后再等待20ms防止PL2303这类串口分包导致数据丢失
    					TimeOut = 1;		//数据接收完毕,退出
    				}
    			}
    		} while (TimeOut);

    //裸机下的操作

    //使用了一个定时器,产生50ms中断进行轮询

    void TIM6_IRQHandler(void)
    {
    	static u32 cnt;	//一定要用静态
    
    	
    	if(TIM6->SR&BIT0)//溢出中断
    	{
    		TIM6->SR = 0;			//清除中断标志位 
    		TIM6->CR1 &= ~BIT0;		//关闭定时器6
    		
    		if((MODEBUS_GetDataCnt(ModeBusHandle.UartCh) == cnt) && (cnt > 0))	//数据长度不为0,并且2次查询的一样,则认为帧结束
    		{
    			//uart_printf("收到数据:%d\r\n",cnt);
    			if((cnt > 3) && (MODEBUS_SLAVE_Handle(&ModeBusHandle, cnt) == TRUE))//MODBUS从机通信处理
    			{
    			
    				
    			}
    			MODEBUS_ClearRxCnt(ModeBusHandle.UartCh);				//清除接收
    		}
    		
    		cnt = MODEBUS_GetDataCnt(ModeBusHandle.UartCh);	//获取接收数据长度,同下次进行对比
     		TIM6->CR1 |= BIT0; //开启定时器6}
    	}
    }


    
    
    展开全文
  • 输入输出控制方式

    千次阅读 热门讨论 2015-04-12 11:22:34
    程序查询方式和程序中断方式适用于数据传输率比较低的外围设备,而DMA方式、通道方式和外围处理机方式则适用于数据传输率比较高的外围设备。
    

         通常,如果外部设备要与存储器进行数据交换,则必须通过CPU执行输入输出指令以及存储器读写指令来完成的。一般而言,CPU管理外围设备的输入输出控制方式有5种:程序查询方式、中断方式、DMA方式(直接内存存取)、通道方式、外围处理机方式,前两种方式由软件实现,后三种方式由硬件实现。

     

    一,程序实现

    1. 程序查询方式

    程序查询方式是CPU不断使用指令检测方法来获取外设工作状态CPU与外围设备的数据交换完全依赖于计算机的程序控制,在进行信息交换之前,CPU要设置传输参数,长度等,然后启动外设工作;外设则进行数据传输的准备工作,在外设准备数据时间里,CPU除了循环检测外设是否已准备好之外,不能处理其他业务,只能一直等待;直到外设完成数据准备工作,CPU才能开始进行信息交换。造成CPU的运行效率极低。

     

    特点:

    1CPU的操作和外围设备的操作能够完全同步,硬件结构也比较简单。

    2造成CPU的运行效率极低。

     

    在当前的实际应用中,除了单片机之外,已经很少使用程序查询方式了。

     

    2. 中断方式

    中断是主机在执行程序过程中,遇到突发事件而中断正在执行的程序,转而对突发事件进行处理,待处理完后继续原程序的执行。

    严格来说,当一个中断发生时,外设发出“中断请求”,CPU暂停其现行程序,保护程序断点地址,把中断处理程序入口地址送入寄存器中进行了中断响应,转而执行中断处理程序,完成数据I/O工作,也就是中断处理;当中断处理完毕后,CPU又返回到原来的任务,并从暂停处继续执行程序。也就是把中断响应保存起来的断点地址重新送回指令指针寄存器,进行了中断返回操作。

     

    特点:

    1)节省了CPU时间,是管理I/O操作的一个比较有效的方法。

    2)与程序查询方式相比,程序中断方式的硬件结构相对复杂一些,服务成本较大。

     

    中断方式一般适用于随机出现的服务,并且一旦提出要求,应立即执行。

     

    3. DMA方式

    DMA方式就是直接存储器存取(Direct Memory Access)方式,是一种完全由硬件执行I/O交换的工作方式。

     

    特点:

    1DMA控制器从CPU完全接管对总线的控制权,数据交换不经过CPU而直接在主存和外围设备之间进行,以便高速传送数据。

    2)数据传送速度很高,传送速率仅受限于主存的访问时间。

    3)与程序中断方式相比,这种方式需要更多的硬件,适用于主存和高速外围设备之间大批量数据交换的场合。

     

    二,硬件实现方式

    1. 通道方式(IOP

    通道是一个具有特殊功能的处理器,又称为输入输出处理器(IOP),它分担了CPU的一部分功能,可以实现对外围设备的统一管理,完成外围设备与主存之间的数据传送。

     

    特点:

    1DMA方式的出现减轻了CPUI/O操作的控制,使得CPU的效率显著提高,而通道的出现则进一步提高了CPU的效率。

    2)这种效率的提高是以增加更多的硬件为代价的。

     

    2. 外围处理机方式(PPU

    外围处理机(PeripheralProcessor UnitPPU)方式是通道方式的进一步发展。基本上独立于主机工作,它的结构更接近于一般的处理机,甚至就是微小型计算机。在一些系统中,设置了多台PPU,分别承担I/O控制、通信、维护诊断等任务,从某种意义上说,这种系统已经变成了分布式多机系统。

     

    特点:

    1外围处理机基本上独立于主机,使得计算机系统结构有了质的飞跃,由功能集中式发展为功能分散的分布式系统。

    2)能分析处理较复杂的工作。

     

    综上所述,程序查询方式和程序中断方式适用于数据传输率比较低的外围设备,而DMA方式、通道方式和外围处理机方式则适用于数据传输率比较高的外围设备。

    展开全文
  • 适用于慢速或中速的外围设备。数据在CPU和外围设备之间的传送完全靠计算机程序控制。优点是CPU的操作和外围设备的操作能够同步,硬件结构比较简单。 缺点是程序进入查询循环时将白白浪费掉CPU很多时间。即使CPU采用...

    2019-05-08       20:01:04

    接口:总线与外部设备之间的一个逻辑部件

    程序查询方式:

    适用于慢速或中速的外围设备。
    数据在CPU和外围设备之间的传送完全靠计算机程序控制。
    优点是CPU的操作和外围设备的操作能够同步,硬件结构比较简单。

    缺点是程序进入查询循环时将白白浪费掉CPU很多时间。即使CPU采用定期地由主程序转向查询设备状态的子程序,进行扫描轮询的办法,CPU宝贵资源的浪费也是可观的。

    结论:CPU主动查询,外设被动。类似于上门零售。
     

    一:程序查询方式的接口分为以下部分:

    1.设备选择器 :判别总线上呼叫的设备是不是本设备。,实际上是设备地址的译码器。

    2.数据缓冲寄存器:输入操作时,用来存放从外部设备读出的数据,然后送往CPU;输出操作时,存放CPU送来的数据,以便于送给外部设备输出。

    3.设备状态标志:接口中的触发器,如:“BUSY”,“READE”,“ERROR”等,用来标志设备的工作状态,以便于借口对外设动作进行监视。

    二:程序查询输入/输出方式,动作如下:

    1.先向I/O设备发出命令字,请求进行数据传送;

    2.从I/O接口中读入状态字(READY=0,BUSY=1时可以进行数据传输)

    3.查看数据交换是否可以进行。

    4.假如没有准备就绪,则2.3步骤重复进行,一直到设备准备好为止,即READY=1.

    5.CPU从I/O接口的数据缓存器输入数据,或者将CPU输出至接口的数据缓存器中,同时,READY=0.(注意:一定要先取走数据,READY才能复位)。

    CPU先把指令中的设备地址通过设备地址送到地址总线上,然后启动命令,向设备发出命令字,请求进行数据传输,从接口中读入状态字,若READY为0,BUSY为1,则启动设备,同时输入数据到DBR(数据缓冲寄存器)中,则取走数据工作结束。使READY为1,BUSY为0,准备就绪后,使DBR中的数据由数据总线输出。

    查询需要的硬件:cpu,接口,外设

                     软件:输入/输出状态程序(输入输出程序)

    三:程序中断方式

    中断:外围设备“主动”通知CPU,准备送出输入数据或接收输出数据的一种方法。

    通常,当一个中断发生时,CPU暂停它的现行程序,而转向中断处理程序,从而可以输入或输出一个数据。
    当中断处理完毕后,CPU又返回到它原来的任务,并从它停止的地方开始执行程序。(如:接电话)

    结论:CPU被动,外设主动。效率大为提高。类似于开店零售。

    中断的硬件 :CPU中设置中断机构   接口中设置中断逻辑。

    中断的软件 :设置中断源对应的中断服务子程序。

    中断处理中需要注意的问题:

    1.CPU只有在当前一条指令执行完毕后,即转入公操作时才受理设备的中断请求。

    2.为了在中断服务程序执行完毕以后,能够正确地返回到主程序被中断的断点(PC内容)位置,要将PC和PSW内容压栈保护。

     

    3.CPU响应中断后,正要去执行中断服务程序时,可能有另一个新的中断源向它发出中断请求,在CPU必须有一个“中断屏蔽”触发器。

    4.中断处理过程是由硬件和软件结合来完成的。

    CPU有决定是否受理中断请求的机构。

    主要是:

    中断请求IR=INTERRUPT  REQUEST     IR=1,表示设备发出了中断请求。
    中断屏蔽IM=INTERRUPT  MASK            IM=0,CPU可以受理外界的中断请求。

    接口方面有决定是否向CPU发出中断请求的机构。

    主要是: 

    准备就绪标志RD=READY

    RD=1,数据放入DBR中

    RD=0,DBR中无数据

    允许中断触发器EI=ENABLE INTERRPUT:

    EI=1,接口可以向CPU发出中断请求

    EI=0,不能向CPU发出中断请求

    工作原理:

    1、由程序启动外设,使得RD=0,BS=1
    2、接口向外设发启动命令
    3、外设把数据放到DBR中
    4、置1 READY
    5、若EI=1,发中断请求
    6、将中断请求打入IR
    7、若IM=0,发中断响应
    8、取得中断向量
    9、转中断服务,输入数据
    10、将RD和BS复位。
    <完>

     

     

    小结:第一次写关于计算机组成原理的blog,今天写的内容主要是老师上课所讲的内容,关于程序查询以及程序中断的相关知识。不久前关注了一个公众号(码农翻身),其中涉及到相当多的计算机行业的内容,看了一些CPU相关知识后,对这部分产生了浓厚的兴趣,结合课本与老师PPT,对这部分内容有了更深的理解,在写的过程中也受益匪浅,与以前的知识相结合,逐渐进步,希望以后更加努力,c语言系列持续更新!

     

    转载于:https://www.cnblogs.com/laurarararararara/p/10834824.html

    展开全文
  • ●共分为五部分: (一)相关知识 (二)硬件原理 (三)软件API (四)调用方法 ...3.中断方式:MCU初始化完毕后,不再读取按键状态,当按键按下时,产生中断,由此判断按键按下   ●硬件准备: 1

    ●共分为五部分:
    (一)相关知识
    (二)硬件原理
    (三)软件API
    (四)调用方法
    (五)实验现象

     

    ●相关知识:

    1.按键驱动分为两种:查询方式和中断方式

    2.查询方式:MCU定时读取按键GPIO的状态,判断是否有按键按下

    3.中断方式:MCU初始化完毕后,不再读取按键状态,当按键按下时,产生中断,由此判断按键按下

     

    ●硬件准备:

    1.Wolf32F031 自由 评估板

    2.电源适配器

    3.JLink/ULink/STLink(本文以STLink为例)

    4.USB转串口(RS232)

     

    ●硬件原理框图:

    111111.png

     

    ●硬件原理图:

    22222222.png

    ●软件资源准备:

    KEY scan poll工程文件:wolf32f031_key_scan_poll.uvproj

     

    ●软件API介绍:

    key_down[BUTTONn];

    //the pushed down key's flag will be TRUE

    key_up[BUTTONn];

    //the pushed up key's flag will be TRUE

    /* key driver module public function */

    void board_key_init(void); 

    void board_key_start_scan(void); 

    void board_key_stop_scan(void); 

     

    BUTTONn取值:

    BUTTON_USER1, BUTTON_USER2, BUTTON_USER3

     

    ●调用方法:

    初始化KEY端口,KEY扫描在初始化以后才有效

    board_key_init(); 

    启动定时器,开始定时扫描键值

    board_key_start_scan(); 

    停用定时器,停止扫描键值

    board_key_stop_scan();

    判断按键是否按下

     if(key_down[BUTTON_USER1])    {

      /*user code do something*/

      key_down[BUTTON_USER1] = FALSE;   

      //按键按下标示需要手动清除

    }

     

    ●实验现象

    3.1硬件连接实物

    333333333.jpg

    3.2编译代码并下载

    打开code\1.basic\KEY_scan\Project\wolf32f031_key_scan_poll

    .uvproj,编译并下载工程。

    3.3下载完成后,按USER1-3用户按键,观察LED现象

    按下USER1,LED1被点亮

    按下USER2,LED2被点亮

    按下USER3,LED3被点亮

     

    依梦科技,或许可以帮到你

    展开全文
  • DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,能使CPU的效率大为提高。STM32F4最多有2个DMA控制器(DMA1和DMA2),共16个...
  • 一个适用于MCS51系列单片机的RTOS。 本RTOS基于陈明计的Small RTOS v1.20.3。 修改如下: 1. 修正Small RTOS v1.20.3中的一些bug。 2. 去掉很多没有的注释。 3. 采用Doxygen风格注释。 4. 去掉很多配置,简化使用。 ...
  • DMADirect Memory Access CPU让出数据总线悬浮状态使外设和存储器之间直接传送不通过CPU数据的方式 适用于外设和存储器之间有大量的数据需要传送及外设工作速度很快的情况;5.2 中断的概念;一中断;六中断服务;5.3 89C...
  • 中断概念参考:...那么最容易想到的就是轮询:但是这种代码只适用于简单的逻辑,假如你有很多很多事情要做。这种方式就很浪费时间,并且,响应时间也会变长。如果硬件可以自动的完成”当按键...
  • DMADirect Memory Access CPU让出数据总线悬浮状态使外设和存储器之间直接传送不通过CPU数据的方式 适用于外设和存储器之间有大量的数据需要传送及外设工作速度很快的情况;5.2 中断的概念;一中断;六中断
  • TL0计数溢出时不仅使溢出中断标志位TF0置1,而且还自动把TH0中的内容重新装载到TL0中。TL0用作8位计数器,TH0用以保存初值。  (2)用于定时工作方式时间时,最大定时时间=256*1个机器周期;用于计数工作方式时,...
  • 在学8位单片机时我没遇到过DMA,DMA适用于传输比较大的数据量,其实也就是传输数据的时候不需要CPU参与,当传输完成会产生中断信号通知CPU,不要以为中断方式和DMA方式一样,虽然都会产生中断信号,但中断方式是通过...
  • 在FREERTOS中,由于任务中调用的API接口函数许多时候需要进入阻塞状态,而硬件中断处理函数应尽可能短,故任务中调用的API函数不适用于硬件中断。故,在FREERTOS中采用了将二者的API接口函数分开的方式,任务中不可....
  • DMA方式

    万次阅读 2016-09-23 11:42:37
    DMA方式是一种完全由硬件进行组信息传送的控制方式。具有程序中断方式的优点,即在数据准备阶段,CPU与外设并行工作。...这种方式适用于磁盘机、磁带机等高速设备大批量数据的传送,它的硬件开销比较大
  • 中断方式 (3).直接存储器存取DMA方式 (1)程序控制方式又分为:无条件传送、条件传送 无条件传送主要针对简单外设进行简单操作。优点是程序不必检查外设的状态,就可以进行输入输出。缺点是CPU与外设工作不同步时...
  • 本文所讲方式适用于托管在Kestrel Server中的应用。如果托管在IIS和IIS Express上时,ASP.NET Core Module(ANCM)并不会告诉ASP.NET ...
  • 本文所讲方式适用于托管在Kestrel Server中的应用。如果托管在IIS和IIS Express上时,ASP.NET Core Module(ANCM)并不会告诉...
  • 如果直接在主函数中写按键控制数码管0-99显示,不管怎么延时数码管十位上的数都会闪,原因就是单片机的机器周器太快,人的按键速度是ms级的,所以等你人操作完了...以下程序是适用于德飞莱51单片机开发板 #includ
  • 适用于F3xx,对AD采样进行调试。 ad_sample: mov amx0p, #0ch ;select channel 单端方式 mov amx0n, #11h ;采P14 setb ad0busy MOV C,AD0BUSY JC $ mov amx0p,#0dh ;采P15 mov amx0n,#11h nop nop nop ...
  • 1.定时器中断方式解码,请使用80us一次的定时器,直接放中断服务函数就可以,适用于所有单片机。 2.本段代码基于stm8s003F3单片机。 3.不同单片机的配置输入模式不一样,自行修改。 4.2262解码也是一样的道理,...
  • 优点是传输速率高,缺点是长距离传输成本高,可靠性差,只适用于近距离传输。   串行通信:将数据分成1位1位的形式在一条传输线上逐个地传送。优点是传输线少,长距离传送时成本低,缺点是传输速率低。 ...
  • 加速度传感器的固有频率是否发生变化,取决使用的安装方法(手持、磁铁、胶水、螺栓等)。从表1可知,用螺栓安装在打磨良好的干净平面上时,频响最高,胶水和磁铁的安装方式频响逐渐减小,手持安装方式可靠度最低。...
  • I/O控制方式

    2011-10-21 09:59:42
    2,中断驱动I/O控制方式适用于高效场合; 3,直接存储访问DMA I/O控制方式适用于无须CPU介入的控制器来控制内存与外设之间的数据交流的场合; 4,I/O通道控制方式适用于以字节为单位的干预,同时实现CPU,...
  • I/O设备和CPU之间数据传送控制方式

    千次阅读 2020-03-10 11:21:01
    程序直接控制方式中断控制方式都只适用于简单的、外设很少的计算机系统,因为程序直接控制方式耗费大量的CPU时间,而且无法检测发现设备或其他硬件产生的错误,设备与CPU、设备与设备只能串行工作。 中断控制方式...
  • 1、轮询方式 ,通过在设备树中指定 broken-cd ,便可使用轮询方式来检测SD卡的插拔检测 适用于没有中断引脚的情况下。这种方式不做过多说明。 2、中断检测方式,通过在设备树中指定cd-gpios,即可使用中断方式来...
  • 注:本文章只适用于在线仿真形式,需要使用能够进行在线仿真的调试器(Jlink,Stlink),串口方式不能进行仿真。 RAM模式下调试程序优点:1.调试效率高,能够设置断点,及进行单步调试等。2.程序无需写入芯片FLASH...
  • 程序方式: 指用输入/输出指令,来控制信息传输的方式,是一种软件控制方式,根据程序控制的...中断方式: 当外设准备好时,由外设通过接口电路向CPU发出中断请求信号,CPU在允许的情况下,暂停执行当前正在执行的程

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 281
精华内容 112
关键字:

中断方式适用于