⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 SmartARM2400系列开发板全套资料
💻 C
字号:
/****************************************Copyright (c)****************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**--------------------------------------------------------------------------------------------------------
** Created by:			daimaobo
** Created date:		2006-12-31
** Version:				v2.00
** Descriptions:		IRQ_FIQ嵌套测试
**--------------------------------------------------------------------------------------------------------
** Modified by:			wankai
** Modified date:		2008-07-08
** Descriptions:		对代码风格和规范进行校对、调整
**
*********************************************************************************************************/
#include "main.h"


#define BEEP        (1 << 30)				                                /* P3.30控制BEEP,低电平蜂鸣*/
#define SSPCR1_SSE	(1 << 1)				                                /* SSP使能					*/
/*********************************************************************************************************
* 函数名称:Delay
* 函数功能:延时函数
* 入口参数:无
* 出口参数:无
*********************************************************************************************************/
void Delay(void)
{
	uint32	dly;
	for (dly = 50000; dly != 0; dly--);
}

/*********************************************************************************************************
* 函数名称:SSP_SendData
* 函数功能:SSP接口向SSP总线发送数据
* 入口参数:data        待发送的数据
* 出口参数:返回值为读取的数据
*********************************************************************************************************/
uint16  SSP_SendData(uint8 data)
{  
    while ((SSP0SR & 0x02) == 0 );	    	                                /* 等待发送FIFO留出空间 	*/
	SSP0DR = data;
    
    while ((SSP0SR & 0x01) == 0 );	    	                                /* 等待TFE置位,即发送FIFO空 */
    return ((uint16)SSP0DR);
}



/*********************************************************************************************************
**函数名称:IRQ_Timer0
**函数功能:Timer0中断服务函数,控制外部 LED1 ~ LED8 闪烁一次
**入口参数:无
**出口参数:无
*********************************************************************************************************/
void IRQ_Timer0(void)
{
	SSP_SendData(0x00);
	Delay();
	
	SSP_SendData(0xFF);	
	T0IR = 0x01;							                                /* 清除定时器0中断标志		*/
}
/*********************************************************************************************************
**函数名称:IRQ_Eint0
**函数功能:EINT1中断服务函数,取反BEEP控制口
**入口参数:无
**出口参数:无
*********************************************************************************************************/
 void __irq IRQ_Eint0(void)
{
	uint32  i;	
	i =(uint32) FIO3SET;					                                /* 读取当前BEEP控制值		*/
	
	/* 控制BEEP输出 */ 
	if ((i & BEEP) == 0) {
		FIO3SET  = BEEP;
	}
	else {
		FIO3CLR  = BEEP;
	}
	
	while ((EXTINT & 0x01)!=0) {			                                /* 等待外部信号恢复为高电平	*/	
		EXTINT  = 0x01;						                                /* 清除EINT0中断标志		*/
	}
	VICVectAddr = 0x00;
}

/*********************************************************************************************************
** 函数名称:SSP_Init
** 函数功能:将SSP控制器设置为主机
** 入口参数:无
** 出口参数:无
*********************************************************************************************************/
void  SSP_Init(void)
{
	PCONP   |= 1 << 21;			    		                                /* 在外设功率控制寄存器里   */
	                                                                        /* 使能SSP外设,默认情况下,  */
	                                                                        /* 该外设已被使能           */
	
	/* 
	 * 初始化P0.15、P0.16、P0.17、P0.18为SSP接口引脚,
	 * 不用另外的IO口作从机选择线,直接用SSEL0完成片选595的功能
	 */
	PINSEL0  = (PINSEL0 & 0x3FFFFFFF) | 0x80000000;
	PINSEL1 |= (0x02 << 0) | (0x02 << 2) | (0x02 << 4);    
	
	/* 
	 * 设置数据长度为8位,帧格式SPI,总线空闲时时钟线为高电平,
	 * 第一个时钟沿采样,位速率为默认值。
	 */
    SSP0CR0  = 0x00000047;
    SSP0CPSR = 0x02;			    		                                /* 设置SSP从PCLK获得的分频值*/
                                                                            /* 主模式下有效,            */
                                                                            /* 最小值为0x02             */
    SSP0CR1  = SSPCR1_SSE;		   			                                /* 设置SSP为主机模式,       */
                                                                            /* 不使用回写模式,并使能	*/
}

/*********************************************************************************************************
** 函数名称:main
** 函数功能:中断嵌套示例。外部中断0和定时器0实现中断嵌套。
** 调试说明:实验前将BEEP与P3.30短接,KEY与P2.10相连
**           MOSI、CS、SPICLK、MISO与P0.18、P0.16、P0.15、P0.17短接
** 注    意:在target.c中添加FIQ中断服务程序FIQ_Exception
********************************************************************************************************/
int main(void)
{	
	
	PINSEL0  = 0x00;
	PINSEL1  = 0x00;
	PINSEL4  = 0x00;
	SCS	    &= 0xFFFFFFFE;									                /* 使用普通GPIO				*/
	
	/* 初始化外部中断0 */
	PINSEL4  = (PINSEL4 & (~(0x03 << 20))) | (0x01 << 20);	                /* 设置P2.10为外部中断0		*/
	EXTMODE  = 0x00;
	EXTPOLAR = 0x00;	
	
	/* 初始化定时器0,实现0.1秒定时 */
	T0TC     = 0;				
	T0PR     = 0;				
	T0MCR    = 0x03;			
	T0MR0    = Fpclk / 10;	
	T0TCR    = 0x01;	
	
	/* 初始化蜂鸣器控制引脚 */ 
	PINSEL7  = 0x00000000;									                /* 设置管脚连接GPIO			*/					
	FIO3DIR  = BEEP;										                /* 设置BEEP控制口输出		*/				
	FIO3SET  = BEEP;
	
	/* 初始化SPI接口 */
	SSP_Init();
	
	/* 外部中断1设置为IRQ中断 */ 
	vicIrqFuncSet(14,  1, (uint32)IRQ_Eint0);
	
	/* 定时器0设置为FIQ中断 */
	vicFiqSet(4);
	IRQEnable();	
	FIQEnable();		
	while (1);
	return (0);
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -