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

📄 iar-

📁 IAR_example_EasyARM8962.zip
💻
📖 第 1 页 / 共 2 页
字号:
    switch (ulRCC & SYSCTL_RCC_OSCSRC_MASK) {                           /*  获取基本时钟速率            */ 
   
    /*  主时钟模式                           */
    case SYSCTL_RCC_OSCSRC_MAIN:
        
         ulClk = g_pulXtals[((ulRCC & SYSCTL_RCC_XTAL_MASK) >>
                             SYSCTL_RCC_XTAL_SHIFT) -
                             (SYSCTL_RCC_XTAL_3_57MHZ >>
                             SYSCTL_RCC_XTAL_SHIFT)];
          break;

    /*  内部时钟                             */
    case SYSCTL_RCC_OSCSRC_INT:
      
          ulClk = 15000000;
          break;
    /*  内部时钟的/4                        */
    case SYSCTL_RCC_OSCSRC_INT4:
       
          ulClk = 15000000 / 4;
          break;
        
    default:
          return(0);
        
    }

    /*  使用PLL倍频的情况                  */
    if (!(ulRCC & SYSCTL_RCC_BYPASS)) {
        /*  获取PLL的配置值                */
        ulPLL = HWREG(SYSCTL_PLLCFG);

        ulClk = ((ulClk * (((ulPLL & SYSCTL_PLLCFG_OD_MASK) >>
                            SYSCTL_PLLCFG_F_SHIFT) + 2)) /
                 (((ulPLL & SYSCTL_PLLCFG_R_MASK) >>
                   SYSCTL_PLLCFG_R_SHIFT) + 2));

        /*  2分频                         */
        if (ulPLL & SYSCTL_PLLCFG_OD_2) {
        
            ulClk /= 2;
        }

        /*  4分频                         */
        if (ulPLL & SYSCTL_PLLCFG_OD_4) {
  
            ulClk /= 4;
        }
    }

    if (ulRCC & SYSCTL_RCC_USE_SYSDIV) {
        /* 	调整时钟                     */
        ulClk /= ((ulRCC & SYSCTL_RCC_SYSDIV_MASK) >>
                  SYSCTL_RCC_SYSDIV_SHIFT) + 1;
    }

    return(ulClk);
}

/*********************************************************************************************************
** Function name:           main
**
** Descriptions:            设置SSI,并从SPI接口输出0-F的字模数据到数码管上显示
**
** input parameters:        NONE
** output parameters:       NONE
**                          
** Returned value:          NONE
**
** Created by:              Zhao shimin
** Created Date:            2007/09/16
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
int main(void)
{
    unsigned long  ulMaxBitRate;
    unsigned long  ulPreDiv;
    unsigned long  ulSCR;
    unsigned long  ulClock;
    unsigned char  i, j;
    unsigned long  rec[16];	

    HWREG(SYSCTL_RCGC1) |= SYSCTL_PERIPH_SSI & 0x0fffffff;              /*  使能 SSI                    */ 
    HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOA & 0x0fffffff;            /*  使能 GPIO A 口              */
    HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOB & 0x0fffffff;  
    
    HWREG(SSI_BASE + SSI_O_CR1) = 0;                                    /*  配置 SSI 为主模式           */ 
   
    ulClock      = SysCtlClockGet();
    ulMaxBitRate = ulClock / BitRate;
    ulPreDiv     = 0;
    do {
	
        ulPreDiv += 2;
        ulSCR = (ulMaxBitRate / ulPreDiv) - 1;
	} while (ulSCR > 255);

    HWREG(SSI_BASE + SSI_O_CPSR) = ulPreDiv;
  
    /*  设置 SSI 传输协议和时钟速率。              */
    HWREG(SSI_BASE + SSI_O_CR0) = ((ulSCR << 8) | (SSI_FRF_MOTO_MODE_0 << 6) |
                                  (SSI_FRF_MOTO_MODE_0 & SSI_CR0_FRF_MASK) | (DataWidth - 1));  
     
    HWREG(SSI_BASE + SSI_O_CR1) |= SSI_CR1_SSE;                         /*  使能 SSI                    */ 
    /*  设定 GPIO A 2~5 引脚为使用外设功能        */
    HWREG(GPIO_PORTA_BASE + GPIO_O_AFSEL) |=   (GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5);
    HWREG(GPIO_PORTA_BASE + GPIO_O_ODR)   &=  ~(GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5);
    HWREG(GPIO_PORTA_BASE + GPIO_O_DEN)   |=   (GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5);
  
  
    /*  设置GPIO B 2~5引脚为输出口,输出到LED1~LED4 */
    HWREG(GPIO_PORTB_BASE + GPIO_O_DIR)   |=   (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);  
    HWREG(GPIO_PORTB_BASE + GPIO_O_AFSEL) &=  ~(GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3); 
    HWREG(GPIO_PORTB_BASE + GPIO_O_DEN)   |=   (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);  
    
    while (1) {

        /*  循环输出 0~F 的字模                       */
        for (i = 0; i < 16; i++) {

            while (!(HWREG(SSI_BASE + SSI_O_SR) & SSI_SR_TNF)) {
	            ;
            }
		
       
            HWREG(SSI_BASE + SSI_O_DR) = DISP_TAB[i];                   /*  向SSI写数据                 */  
            delay(1000);

            while (!(HWREG(SSI_BASE + SSI_O_SR) & SSI_SR_RNE)) {
                ;
            }
            rec[i] = HWREG(SSI_BASE + SSI_O_DR);
            for (j = 0; j < 16; j++) {
	 
                if (DISP_TAB[j] == rec[i]) {
                    /*  用独立的LED输出相应的16进制      */
                    HWREG(GPIO_PORTB_BASE + 
                         (GPIO_O_DATA + ((GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3) << 2)))= ~j; 
				    
                    break;
			    }
            }
            delay(600000);
        }
    }

}
/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

⌨️ 快捷键说明

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