main.c

来自「试验仪自检程序」· C语言 代码 · 共 75 行

C
75
字号

//======================================================
//  The information contained herein is the exclusive property of
//  Sunnnorth Technology Co. And shall not be distributed, reproduced,
//  or disclosed in whole in part without prior written permission.
//               (C) COPYRIGHT 2003  SUNNORTH TECHNOLOGY CO.
//                           ALL RIGHTS RESERVED
//  The entire notice above must be reproduced on all authorized copies.
//========================================================

//============================================================
// 文件名称:main.c  
// 实现功能: Flash 存储的擦除和读写
//        A口低8位接8个LED,当读写擦除全部成功时,点亮所有的LED
//        擦除失败时点亮第一个LED 
//        写单字失败时点亮第二个LED
//        写页失败时点亮第三个LED
//============================================================

#include "hardware.h"
#define C_Fail_Led4     0x0008
#define C_Fail_Led3     0x0004
#define C_Fail_Led2     0x0002
#define C_Fail_Led      0x0001
#define C_Success_Led   0x00ff

//============================================================= 
// 函数名称: int main()
// 功能描述:  Flash 存储的擦除和读写
//        A口低8位接8个LED,当读写擦除全部成功时,点亮所有的LED
//        擦除失败时点亮第一个LED 
//        写单字失败时点亮第二个LED
//        写页失败时点亮第三个LED。
// 语法格式:  int main()
// 注意事项:    仅为用户模型
//=================================================================
int main()
{
	unsigned int *sector, *addr,*P_Watchdog_Clear = 0x7012;
	int i;
	const int num[]={
    	1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15, 16,
        17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
    	33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
    	49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
    	65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
        81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
        97, 98, 99, 100,101,102,103,104,105,106,107,108,109,110,111,112,
		113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128};
    SP_Init_IOA(0xffff,0xffff,0xffff);		           //设置A口为输出端
	SP_Init_IOB(0x0040,0x0040,0x0040);
	sector = 0xA000;
	F_FlashErase(sector);                              //擦除256字节/128字
	for (i=0;i<0x100;i++)					           //擦除成功否
	{
		if (*(sector+i)!=0xffff)
		{
			SP_Export(Port_IOA_Buffer, C_Fail_Led);    //否,点亮第一个LED  
			return(1);
		}
	}
	addr = 0xA000;
	
	F_FlashWrite1Word(addr,0x5555);                    //在A000地址处写0x5555
	
	if( * addr!=0x5555)                                //写成功否
	{
		SP_Export(Port_IOA_Buffer, C_Fail_Led2);       //否,点亮第二个LED	   
		return(1);
	}
	addr = 0xA001;	
	F_FlashWrite1Word(addr,0xAAAA);                    //在A001地址处写0xaaaa
  	if (* addr!=0xAAAA)                                //写成功否
	{
		SP_Export(Port_IOA_Buffer, C_Fail_Led3);       //否,点亮第三

⌨️ 快捷键说明

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