Exemplo n.º 1
0
/**************************实现函数********************************************
*函数原型:		void Initial_UART1(u32 baudrate)
*功  能:		初始化UART1
输入参数:u32 baudrate   设置RS232串口的波特率
输出参数:没有
*******************************************************************************/
void UART1_init(u32 pclk2,u32 bound)
{
    float temp;
    u16 mantissa;
    u16 fraction;
    temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV
    mantissa=temp;				 //得到整数部分
    fraction=(temp-mantissa)*16; //得到小数部分
    mantissa<<=4;
    mantissa+=fraction;
    RCC->APB2ENR|=1<<2;   //使能PORTA口时钟
    RCC->APB2ENR|=1<<14;  //使能串口时钟
    GPIOA->CRH&=0XFFFFF00F;//IO状态设置
    GPIOA->CRH|=0X000008B0;//IO状态设置
    RCC->APB2RSTR|=1<<14;   //复位串口1
    RCC->APB2RSTR&=~(1<<14);//停止复位
    //波特率设置
    USART1->BRR=mantissa; // 波特率设置
    USART1->CR1|=0X200C;  //1位停止,无校验位.
    USART1->CR1|=1<<8;    //PE中断使能
    USART1->CR1|=1<<5;    //接收缓冲区非空中断使能

    UART1NVIC_Configuration();//中断配置
    printf("系统时钟频率:%dMHz \r\n",pclk2);
    printf("串口1初始化波特率:%d \r\n",bound);


}
Exemplo n.º 2
0
/**************************实现函数********************************************
*函数原型:		void Initial_UART1(u32 baudrate)
*功  能:		初始化UART1
输入参数:u32 baudrate   设置RS232串口的波特率
输出参数:没有	
*******************************************************************************/
void UART1_init(u32 pclk2,u32 bound)
{  	 
	float temp;
	u16 mantissa;
	u16 fraction;	   
	temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV
	mantissa=temp;				 //得到整数部分
	fraction=(temp-mantissa)*16; //得到小数部分	 
  mantissa<<=4;
	mantissa+=fraction; 
	RCC->APB2ENR|=1<<2;   //使能PORTA口时钟  
	RCC->APB2ENR|=1<<14;  //使能串口时钟 
	GPIOA->CRH&=0XFFFFF00F;//IO状态设置
	GPIOA->CRH|=0X000008B0;//IO状态设置
	RCC->APB2RSTR|=1<<14;   //复位串口1
	RCC->APB2RSTR&=~(1<<14);//停止复位	   	   
	//波特率设置
 	USART1->BRR=mantissa; // 波特率设置	 
	USART1->CR1|=0X200C;  //1位停止,无校验位.
  USART1->CR1|=1<<8;    //PE中断使能
	USART1->CR1|=1<<5;    //接收缓冲区非空中断使能	    	
 
  UART1NVIC_Configuration();//中断配置
  
  
  UartTxbuf.Wd_Indx = 0;
  UartTxbuf.Rd_Indx = 0;
  UartTxbuf.Mask = TX_BUFFER_SIZE - 1;
  UartTxbuf.pbuf = &tx_buffer[0];
  
  UartRxbuf.Wd_Indx = 0;
  UartRxbuf.Rd_Indx = 0;
  UartRxbuf.Mask = RX_BUFFER_SIZE - 1;
  UartRxbuf.pbuf = &rx_buffer[0];
  
  
  printf("MCU clock frequency:%dMHz \r\n",pclk2);
  printf("UART 1 baud frequncy:%d \r\n",bound);
 
  
}
Exemplo n.º 3
0
/********************************************
           系统中断优先级配置
功能:
1.各个中断优先级配置函数统一封装为:中断优先级配置初始化
********************************************/
void NVIC_INIT(void)
{
    TimerNVIC_Configuration();//定时器中断配置
    UART1NVIC_Configuration();//串口1中断配置
}