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

📄 iar-

📁 IAR_example_EasyARM8962.zip
💻
📖 第 1 页 / 共 2 页
字号:
/****************************************Copyright (c)****************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File Name:               Main.c
** Last modified Date:      2007.10.20
** Last Version:            v1.0
** Description:             SD卡读卡器实验
** 
**--------------------------------------------------------------------------------------------------------
** Created By:              zhou hai xin
** Created date:            2007.10.20
** Version:                 v1.0
** Descriptions:            初始版本
**
**--------------------------------------------------------------------------------------------------------
** Modified by:             Kang qinhua
** Modified date:           2007.11.21
** Version:	            v1.1
** Description:	            对sdhal.c中的SPI的频率设定做了修改
**                          原来采用寄存器修改分频值(主频修改后可能导致SPI不可用)
**                          现在采用库函数配置SPI速率(可适用于不同的系统时钟下)
**                          在sd_SPI.h中修改SD卡的工作波特率
**
*********************************************************************************************************/

#include <includes.h>

/*********************************************************************************************************
  CONSTANTS 常量
*********************************************************************************************************/
#define CMD_SD_INIT         0x00                                        /*  卡初始化卡命令              */
#define CMD_SD_READ         0x01                                        /*  卡读命令                    */
#define CMD_SD_WRITE   	    0x02                                        /*  卡写命令                    */
#define CMD_SD_ERASE        0x03                                        /*  卡擦除命令                  */
#define CMD_DATA_TRANS      0x04                                        /*  将sd_buf中的数据发送到PC机  */
#define CMD_DATA_RECV       0x05                                        /*  接收来自串口的数据,并放入
                                                                            sd_buf中                    */

#define UART_O_LCR_H        0x0000002C                                  /*  线控制寄存器,高字节        */
										  
INT8U sd_buf[520];                                                      /*  数据缓冲区                  */

/*********************************************************************************************************
  VARIABLES 变量 
*********************************************************************************************************/
static  OS_STK  Task_CardStk[TASK_CARD_STK_SIZE];                       /*  卡操作任务堆栈              */

OS_EVENT *Uart0ReviceMbox;                                              /*  串口接收数据邮箱            */

/*********************************************************************************************************
   FUNCTION PROTOTYPES 函数声明 
*********************************************************************************************************/
static void Task_Card(void *p_arg);                                     /*  声明卡操作任务              */

/*********************************************************************************************************
** Function name:     SSIInit
** Descriptions:      初始化SSI
** input parameters:  无
** output parameters: 无
** Returned value:    无
*********************************************************************************************************/
void  SSIInit (void)
{
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI);                          /*  使能SSI                     */

    SSIConfig(SSI_BASE,SSI_FRF_MOTO_MODE_0,                             /*  配置SSI                     */
	      SSI_MODE_MASTER,BitRate,DataWidth);

    SSIEnable(SSI_BASE);                                                /*  使能SSI                     */

                                                                        /*  配置GPIO口                  */
    GPIODirModeSet(GPIO_PORTA_BASE, 
                  (GPIO_PIN_2 | GPIO_PIN_4 | GPIO_PIN_5),
                   GPIO_DIR_MODE_HW);
}

/*********************************************************************************************************
** Function name:     GPIO_SET
** Descriptions:      对各个GPIO口进行配置驱动强度和结构类型。
** input parameters:  无
** output parameters: 无
** Returned value:    无
*********************************************************************************************************/
void GPIO_SET (void)
{
    GPIOPadConfigSet(GPIO_PORTA_BASE, SPI_SCK,                          /*  设置SPI_SCK的驱动强度和类型 */                         
                     GPIO_STRENGTH_4MA,                                 /*  4mA的输出驱动强度           */          
                     GPIO_PIN_TYPE_STD);                                /*  设置为推挽管脚              */

    GPIOPadConfigSet(GPIO_PORTA_BASE, SPI_MISO,                         /*  设置SPI_MISO的驱动强度和类型*/                         
                     GPIO_STRENGTH_4MA,                                 /*  4mA的输出驱动强度           */          
                     GPIO_PIN_TYPE_STD);                                /*  设置为推挽管脚              */
	
    GPIOPadConfigSet(GPIO_PORTA_BASE, SPI_MOSI,                         /*  设置SPI_MOSI的驱动强度和类型*/                                                  
                     GPIO_STRENGTH_4MA,                                 /*  4mA的输出驱动强度           */          
                     GPIO_PIN_TYPE_STD);                                /*  设置为推挽管脚              */
	
    GPIOPadConfigSet(GPIO_PORTA_BASE, SPI_CS,                           /*  设置SPI_CS的驱动强度和类型  */                         
                     GPIO_STRENGTH_4MA,                                 /*  4mA的输出驱动强度           */          
                     GPIO_PIN_TYPE_STD);                                /*  设置为推挽管脚              */
	
    GPIOPadConfigSet(GPIO_PORTG_BASE, SD_POWER,                         /*  设置SD_POWER的驱动强度和类型*/                         
                     GPIO_STRENGTH_4MA,                                 /*  4mA的输出驱动强度           */          
                     GPIO_PIN_TYPE_STD);                                /*  设置为推挽管脚              */
	
    GPIOPadConfigSet(GPIO_PORTG_BASE, SD_INSERT,                        /*  设置SD_INSERT驱动强度和类型 */                         
                     GPIO_STRENGTH_4MA,                                 /*  4mA的输出驱动强度           */          
                     GPIO_PIN_TYPE_STD);                                /*  设置为推挽管脚              */
	
    GPIOPadConfigSet(GPIO_PORTE_BASE, SD_WP,                            /*  设置SD_WP的驱动强度和类型   */                         
                     GPIO_STRENGTH_4MA,                                 /*  4mA的输出驱动强度           */          
                     GPIO_PIN_TYPE_STD);                                /*  设置为推挽管脚              */
}

/*********************************************************************************************************
** Function name:     uart0init
** Descriptions:      串口的初始化。
** input parameters:  BaudRate :波特率
**                     Prio     :中断优先级
** output parameters: 无
** Returned value:    无
*********************************************************************************************************/
void uart0init (INT32U  BaudRate, INT8U  Prio)
{
    SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);               	        /*  使能串口0外围设备           */

    GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); 	        /*  设置PA0,PA1为RXD0,TXD0      */
  															   
    UARTConfigSet(UART0_BASE, BaudRate, (UART_CONFIG_WLEN_8   |         /*  数据宽度为8位               */ 
                  UART_CONFIG_STOP_ONE |                                /*  一个停止位                  */ 
                  UART_CONFIG_PAR_NONE));                               /*  无奇偶校验位                */

    IntEnable(INT_UART0);                                      	        /*  使能串口0系统中断           */
    UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);      	        /*  使能串口0接收和接收超时中断 */
    IntPrioritySet(INT_UART0, Prio);                           	        /*  设置中断优先级              */     
    UARTEnable(UART0_BASE);                                             /*  使能串口                    */  
}

/*********************************************************************************************************
** Function name:     uart0send
** Descriptions:      发送多个字节数据。
** input parameters:  Buffer : 发送数据存储位置
**                     NByte  : 发送数据个数
** output parameters: 无
** Returned value:    无
*********************************************************************************************************/
void uart0send (INT8U  *Buffer, INT16U  NByte)
{
    while (NByte) {                                                     /*  判断是否有数据              */
        if (UARTSpaceAvail(UART0_BASE)) {                               /*  判断FIFO是否有可用空间      */

⌨️ 快捷键说明

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