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

📄 main.c

📁 微处理器在arm的编程
💻 C
字号:
#include"71x_lib.h"

///////////////////////////////////////////////////////////////////////////////
#define UART0_Rx_Pin (0x0001<<8)   
#define UART0_Tx_Pin (0x0001<<9)   
#define UART1_Rx_Pin (0x0001<<10) 
#define UART1_Tx_Pin (0x0001<<11)  

////////////////////////////////////////////////////////////////////////////////
extern void Delay_NS(u32 dly)
{
   u32 i;
   for(;dly>0;dly--)
      for(i=0;i<5000;i++);
}

/////////////////////////////////////////////////////////////////////////////////
void Init_UART0(void)                       //配置UART0
{ 
  /* Init UART0 */
  UART_Init(UART0);
  /*  Turn UART on */
  UART_OnOffConfig(UART0, ENABLE);  
  /*  Disable FIFOs */    
  UART_FifoConfig(UART0, DISABLE);      
  /*  Reset the UART_RxFIFO */
  UART_FifoReset(UART0 , UART_RxFIFO);
  /*  Reset the UART_TxFIFO */
  UART_FifoReset(UART0 , UART_TxFIFO);
   /*  Disable Loop Back */
  UART_LoopBackConfig(UART0,DISABLE); 
  /* Configure the UART as following:
     - Baudrate = 115200 Bps
     - No parity
     - 8 data bits
    - 1 stop bit */
  UART_Config(UART0,115200,UART_NO_PARITY,UART_1_StopBits,UARTM_8D);
  /*  Enable Rx */	
  UART_RxConfig(UART0,ENABLE);
  /* Config RxBufFull Enale */
  UART_ItConfig(UART0,UART_RxBufFull,ENABLE);
  Delay_NS(20);
}

///////////////////////////////////////////////////////////////////////////////
void Init_UART1(void)                       //配置UART1
{  
  /* Init UART1 */
  UART_Init(UART1);  
  /*  Turn UART on */
  UART_OnOffConfig(UART1,ENABLE);  
  /*  Disable FIFOs */    
  UART_FifoConfig (UART1, DISABLE);      
  /*  Reset the UART_RxFIFO */
  UART_FifoReset  (UART1, UART_RxFIFO);
  /*  Reset the UART_TxFIFO */
  UART_FifoReset  (UART1 , UART_TxFIFO);
   /*  Disable Loop Back */
  UART_LoopBackConfig(UART1,DISABLE); 
  /* Configure the UART as following:
     - Baudrate = 115200 Bps
     - No parity 
     - 8 data bits
     - 1 stop bit */
  UART_Config(UART1,9600,UART_NO_PARITY,UART_1_StopBits,UARTM_8D);
  /* Config RxBufFull Enale */
  UART_ItConfig(UART1,UART_RxBufFull,ENABLE);
  /*  Enable Rx */	
  UART_RxConfig(UART1,ENABLE);
  Delay_NS(20);
}

/////////////////////////////////////////////////////////////////////////////////
void   Init_Clock(void)                    //主时钟
{
  // 使能2分频
  RCCU_Div2Config(ENABLE);
  RCCU_RCLKSourceConfig(RCCU_CLOCK2);
  // 配置 PLL1 (*12 , /2)
  RCCU_PLL1Config(RCCU_PLL1_Mul_12, RCCU_Div_2); 
  //选择PLL1的输出时钟作为主输入时钟
  RCCU_RCLKSourceConfig(RCCU_PLL1_Output); //选择时钟源
  //共三个时钟
  //MCLK=RCLK主时钟
  RCCU_MCLKConfig(RCCU_DEFAULT); 
  //PCLK2=RCLK/4
  RCCU_PCLKConfig(RCCU_RCLK_4);           //TIM APB2 12
  //PCLK1=RCLK/2 
  RCCU_FCLKConfig(RCCU_RCLK_2);           //串口 APB 124
  Delay_NS(20);		
}

/////////////////////////////////////////////////////////////////////////////////
void  TIM1_Initialize(void)              //溢出定时器1(100MS)
{
  TIM_Init(TIM1); 
  TIM_PrescalerConfig(TIM1,19);         //设置分频系数   
}

/////////////////////////////////////////////////////////////////////////////////
void  ConfigAllInterrupt(void)           //中断配置
{
   EIC_Init();                           //初始化中断
   EIC_IRQConfig(ENABLE);                //使能中断开启
   
   //定时器1的溢出时间
   TIM1_Initialize();            
     
   //配置T1中断通道号 
   EIC_IRQChannelPriorityConfig(T1TIMI_IRQChannel,2);   
   EIC_IRQChannelConfig(T1TIMI_IRQChannel, ENABLE); 
   
   //配置EIC中断通道 UART1
   EIC_IRQChannelPriorityConfig(UART1_IRQChannel,6); 
   EIC_IRQChannelConfig(UART1_IRQChannel, ENABLE);  
   
   //配置EIC中断通道 UART0 
   EIC_IRQChannelPriorityConfig(UART0_IRQChannel,7);
   EIC_IRQChannelConfig(UART0_IRQChannel, ENABLE);  
   
    //UART0串口接收使能中断
   UART_ItConfig(UART0,UART_RxBufFull,ENABLE);
   
    //UART1串口接收使能中断
   UART_ItConfig(UART1,UART_RxBufFull,ENABLE);
    
   //TIM1溢出中断使能
   TIM_ITConfig(TIM1, TIM_TO_IT, ENABLE);
     
   //起动TIM1开始计数   
   TIM_CounterConfig(TIM1,TIM_START);  
   Delay_NS(20);  
}

////////////////////////////初始化函数结束///////////////////////////////////////
void Init_SystemPort(void)          //通用口初始化
{
  
 Init_Clock();
 
 GPIO_Config(GPIO0,UART0_Tx_Pin, GPIO_AF_PP);
 GPIO_Config(GPIO0,UART0_Rx_Pin, GPIO_IN_TRI_CMOS);
 GPIO_Config(GPIO0,UART1_Tx_Pin, GPIO_AF_PP);
 GPIO_Config(GPIO0,UART1_Rx_Pin, GPIO_IN_TRI_CMOS);
 GPIO_Config(GPIO0,(1<<6)|(1<<7),GPIO_OUT_PP);//推举输出P0.6或P0.7
 GPIO_BitWrite(GPIO0,1<<6,1);      //置位P0.6电平
 GPIO_BitWrite(GPIO0,1<<7,1);      //置位P0.7电平
 Delay_NS(20);
 
 Init_UART0();                     //配置UART0
 Init_UART1();                     //配置UART1 
}

////////////////////////////////////////////////////////////////////////////////
int main()
{    
     Init_SystemPort();           //初始化串口
     ConfigAllInterrupt();        //配置所有中断
     TIM1_Initialize();           //初始化定时器
     Delay_NS(168);
     
     while(1)  
     {  //空操作                      
     }    
}


⌨️ 快捷键说明

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