📄 main.c
字号:
#define IN_MAIN
#include "config.h"
#include "SSP.h"
#include "SPI.h"
#include "UART.h"
#include "Legacy_GPIO.h"
#include "ISR.h"
#pragma import(__use_no_semihosting_swi) //don't delete this line
//定义SSP配置值
#define SSP_Type 0 //SPI通信格式
#define SSP_MODE 0 //从机
#define SSP_Fssp 0 //从机不关心通信速率
#define SSP_Int_En 2 //超时中断使能
//定义SPI配置值
#define SPI_MODE 1 //主机
#define SPI_Fspi 100000 //通信速率100K
#define SPI_INT_En 0 //中断禁止
//定义UART配置值
#define UARTn_n 0 //UART0
#define UARTn_baud 115200 //通信波特率为115200
#define UARTn_datab 8 //8位数据位
#define UARTn_stopb 1 //1位停止位
#define UARTn_parity 0 //无奇偶校验位
#define UARTn_Int_En 0 //中断禁止
#define SPI_CS (1<<7) //P0.7作为片选端口
/*********************************************************************************************************
** Function name: IRQ_Exception
** Descriptions: interrupt exceptional handler , change it as needed
** don't delete this function
********************************************************************************************************/
void IRQ_Exception(void)
{
}
/*********************************************************************************************************
** 函数名称:DelayNS()
** 函数功能:长软件延时
** 入口参数:dly 延时参数,值越大,延时越久
** 出口参数:无
********************************************************************************************************/
void DelayNS(uint32 dly)
{
uint32 i;
for(; dly>0; dly--)
for(i=0; i<50000; i++);
}
/*********************************************************************************************************
** 函数名称:IRQ_SSP()
** 函数功能:SSP中断服务程序。
** 入口参数:无
** 出口参数:无
********************************************************************************************************/
void IRQ_SSP(void)
{
SSPICR = 0x02; //清除超时中断
UARTn_SendByte(UARTn_n,SSPDR); //将接收到的数据发送到PC机上
VICVectAddr = 0x00;
}
/*********************************************************************************************************
** 函数名称:Main()
** 函数功能:SSP作为SPI从机实验。主机为SPI接口,从机为SSP接口。
** SPI接口循环发送数据'0'~'9',SSP收到数据后,再将收到的数据通过UART0发送到PC机上。
** 说明:P0.14连接P0.4、P0.19连接P0.5、P0.20连接P0.6、P0.21连接P0.7。
********************************************************************************************************/
void Main(void)
{
uint8 i;
TargetInit(VPBDIV_DATA, PLLCFG_DATA, MAMTIM_DATA); // don't delete
while((PLLSTAT & (1 << 10)) == 0); // can delete
SSP_Init(SSP_Type,SSP_MODE,SSP_Fssp,SSP_Int_En); //SSP初始化为从机
SPI_Init(SPI_MODE,SPI_Fspi,SPI_INT_En); //SPI初始化为主机
//初始化UART
UARTn_Init(UARTn_n,UARTn_baud,UARTn_datab,UARTn_stopb,UARTn_parity,UARTn_Int_En);
SetISR(SSP_INT,0, (uint32)IRQ_SSP); //设置SSP的IRQ中断
IRQEnable();
P0_GPIOInit(SPI_CS,1); //SPI_CS初始化位GPIO输出模式
while(1)
{
for(i = 0;i < 10;i++)
{
P0_GPIOClr(SPI_CS);
SPI_SendByte(i + '0');
P0_GPIOSet(SPI_CS);
DelayNS(50);
}
}
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -