📄 main.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: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
** 说明:
**
**********************************************************************************************************/
#include "config.h"
#include "string.h"
#define BEEP (1<<30)
sd_struct sds; /* 定义卡信息结构体 */
/**********************************************************************************************************
** 函数名称: BeepOnOff()
** 函数功能: 控制蜂鸣器蜂鸣
** 入口参数: cnt 蜂鸣次数
** 出口参数: 无
** 调试说明: 无
**********************************************************************************************************/
void BeepOnOff(uint32 cnt)
{
uint32 i,j;
for(i=0;i<cnt;i++) {
FIO3CLR = BEEP;
for(j=0;j<0x500000;j++); /* 延时,控制一次鸣叫时间 */
FIO3SET = BEEP;
for(j=0;j<0x500000;j++);
}
}
/**********************************************************************************************************
** 函数名称: SetISR()
** 函数功能: 设置向量中断
** 入口参数: no 中断号
** pri 中断优先级
** isr_func 中断服务函数入口地址
** 出口参数: 操作是(1)否(0)成功
** 调试说明:
**********************************************************************************************************/
uint8 SetISR(uint32 no, uint32 pri, uint32 isr_func)
{
if(no > 31) return 0;
if(pri > 15) return 0;
*(volatile uint32*)((&VICVectAddr0)+no) = isr_func; /* 设置中断服务函数 */
*(volatile uint32*)((&VICVectPri0)+no)= pri & 0x0F; /* 设置中断优先级 */
VICIntSelect &= ~(1<<no);
VICIntEnable = 1<<no;
return 1;
}
/**********************************************************************************************************
** 函数名称 :main()
** 函数功能 :
** 调试说明 :
**********************************************************************************************************/
int main (void)
{
uint32 i;
uint8 status;
uint8 sdbuf[512]={0};
uint8 sdbuf2[512]={0};
for(i=0;i<512;i++) {
sdbuf[i] = i&0xff;
}
FIO3DIR |= BEEP; /* 设置BEEP控制口为输出 */
FIO3SET = BEEP;
status = SD_Initialize(&sds); /* SD 初始化 */
if (status != SD_NO_ERR) {
while(1);
}
SetISR(24, 5, (uint32)MCI_Handler); /* 设置SD/MMC卡控制器的中断向量 */
IRQEnable();
status = SD_WriteBlock(&sds,0,sdbuf); /* 将sdbuf缓冲区的数据写入第0块中*/
if (status != SD_NO_ERR) {
while(1);
}
status = SD_ReadBlock(&sds,0,sdbuf2); /* 读第0块的数据 */
if (status != SD_NO_ERR) {
while(1);
}
status = memcmp(sdbuf,sdbuf2,512); /* 对sdbuf2与sdbuf的内容进行比较 */
if(status!=0) { /* 数据比较错误,蜂鸣器蜂鸣三声 */
BeepOnOff(3);
} else { /* 正确,蜂鸣一声 */
BeepOnOff(1);
}
while(1);
return 0;
}
/**********************************************************************************************************
** End Of File
**********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -