NUC140之中断

33 篇文章 1 订阅

中断属于比较深入的ARM课程了,可以简单理解为在程序正常循环运行中,

满足一定程度的条件就会打断该循环,优先运行。

最简单的中断是I/O中断,一般分边沿触发和电平触发,边沿触发后,

要判断电平的高低程度,也可以作防抖动处理,

程序如下

/*****************************************
*文件名:VOP_OK_error_solution.c         *
*功能:供电异常处理     	             *
******************************************/

#include "VOP_OK_error_solution.h"

/**************************************************
 *函数名:	GPCDE_call_back         			
 *功能:	PE.6 VOP-OK监测中断回调函数(CDE三个端口共用)          
 *出口参数:无									  
 *入口参数:三个,暂无用    					  
 *************************************************/
void GPCDE_call_back (uint32_t temp_data1, uint32_t temp_data2, uint32_t temp_data3)
{
	if ((DrvGPIO_GetBit (E_GPE, 6) == 0)&&(error_register1.error_sample_all == 0)&&(status_register2.status_sample_all == 0))
	{
		error_register1.error_sample.VOP = 1; //设置VOP状态异常
	}
}

/**************************************************
 *函数名:	GPAB_Call_back	                      *
 *功能:	AB端口中断回调函数,暂时无用        *
 *出口参数:无									  *
 *入口参数:两个,暂无用     					  *
 *************************************************/
void GPAB_Call_back (uint32_t temp_data1, uint32_t temp_data2)
{
}

/**************************************************
 *函数名:	VOP_OK_interrupt_initialize 	      *
 *功能:	PE.6 VOP-OK监测中断初始化函数         *
 *出口参数:无									  *
 *入口参数:无									  *
 *************************************************/
void VOP_OK_interrupt_initialize (void)						  
{
	DrvGPIO_EnableInt (E_GPE,								  //使能GPE端口的中断
					   6,									  //使能端口PE.6
					   E_IO_FALLING,						  //中断类型为下降沿触发
					   E_MODE_EDGE);						  //中断模式为边沿触发
	DrvGPIO_SetIntCallback (GPAB_Call_back, GPCDE_call_back); //安装中断函数
}

/**************************************************
 *函数名:	setup_interrupt_order 	      
 *功能:	设置中断优先级         
 *出口参数:无									  
 *入口参数:无									  
 *************************************************/
void setup_interrupt_order(void)
{
	register_NVIC_IPR0 &= (~(3<<14));   //看门狗设为最高优先级0
	register_NVIC_IPR1 |= (3<<14);		//GPCDE中断也就是VOP-OK中断设置为最低优先级3
	register_NVIC_IPR2 |= ((2<<6)|(2<<14)|(2<<22)|(0x80000000)); //设置TMR0~TMR3为次低优先级2
	register_NVIC_IPR3 |= ((1<<6)|(1<<14));					     //设置UART0~UART2为次高优先级1
}	

 

头文件为

#ifndef VOP_OK_error_solution_h
#define VOP_OK_error_solution_h

#include "common_variables.h"
#include "DrvGPIO.h"
#include "NUC140_address.h"

extern void VOP_OK_interrupt_initialize (void); //供电异常处理函数

/**************************************************
 *函数名:	setup_interrupt_order 	      
 *功能:	设置中断优先级         
 *出口参数:无									  
 *入口参数:无									  
 *************************************************/
extern void setup_interrupt_order(void);
#endif




串口中断等其他中断见其他子程序。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nuc140是一款32位单片机,具有内置的Flash存储器。Flash存储器是常用的非易失性存储器,可以持久保存数据。Nuc140的Flash存储器能够进行读写操作,将数据存储在其中或从中读取出来。 在进行Flash读写操作之前,需要对Nuc140进行初始化和配置。首先,我们需要设置相关的控制寄存器,如数据保护位和写保护位,以确保数据的完整性和安全性。然后,选择需要进行读写操作的Flash扇区,并选择相应的操作模式,如字节读写或页读写。 对于Flash的写操作,要先将目标数据加载到写缓冲器中,然后通过指令将其写入Flash存储器的特定地址中。在进行写操作时,需要注意Flash存储器的擦除规则,即在写入新数据之前,需要将原有的数据扇区进行擦除操作。 对于Flash的读操作,可以直接通过指定的地址来读取相应的数据。读操作可以读取整个扇区的数据,也可以读取特定地址范围内的数据。 在进行Flash读写操作时,需要注意以下几点:首先,要小心操作数据的边界,避免越界读写;其次,要遵循Flash存储器的擦除规则,以确保数据的正确性;同时,要注意在读写操作中不要对Flash进行过多的访问,以免造成过度磨损,影响存储器的寿命。 总体来说,Nuc140的Flash存储器具有可靠的读写功能,可以有效地存储和读取数据,对于嵌入式系统开发和应用具有重要的意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值