<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        stm32 printf輸出到USART1

        作者:佚名   來源:本站原創   點擊數:  更新時間:2014年03月14日   【字體:



        /************************頭文件*****************************************/

        #include"stm32f10x_lib.h" //包含所有的頭文件
        #include<stdio.h>

         

        /*******************************位綁定定義*****************************************/
        //#define GPIOA_ODR_A  (GPIOA_BASE+0x0C)
        //#define GPIOA_IDR_A  (GPIOA_BASE+0x08)
        //#define GPIOB_ODR_A  (GPIOB_BASE+0x0C)
        //#define GPIOB_IDR_A  (GPIOB_BASE+0x08)
        //#define GPIOC_ODR_A  (GPIOC_BASE+0x0C)
        //#define GPIOC_IDR_A  (GPIOC_BASE+0x08)
        //#define GPIOD_ODR_A  (GPIOD_BASE+0x0C)
        //#define GPIOD_IDR_A  (GPIOD_BASE+0x08)
        //#define GPIOE_ODR_A  (GPIOE_BASE+0x0C)
        //#define GPIOE_IDR_A  (GPIOE_BASE+0x08)
        //
        //#define BitBand(Addr,BitNum)    *((volatile unsigned long *)((Addr&0xF0000000)+0x2000000+((Addr&0xfffff)<<5)+(BitNum<<2)))
        //
        //#define PAout(n)   BitBand(GPIOA_ODR_A,n)
        //#define PAin(n)    BitBand(GPIOA_IDR_A,n)
        //#define PBout(n)   BitBand(GPIOB_ODR_A,n)
        //#define PBin(n)    BitBand(GPIOB_IDR_A,n)
        //#define PCout(n)   BitBand(GPIOC_ODR_A,n)
        //#define PCin(n)    BitBand(GPIOC_IDR_A,n)
        //#define PDout(n)   BitBand(GPIOD_ODR_A,n)
        //#define PDin(n)    BitBand(GPIOD_IDR_A,n)
        //#define PEout(n)   BitBand(GPIOE_ODR_A,n)
        //#define PEin(n)    BitBand(GPIOE_IDR_A,n)


        /*******************************************************************************/
        /* 函數名  : RCC_Configuration                                                 */
        /* 功能    : 初始化外部時鐘                                                    */
        /* 輸入    : None                                                              */
        /* 輸出    : None                                                              */
        /* 返回    : None                                                              */
        /********************************************************************************/
        void RCC_Configuration(void)
        {
        //----------使用外部RC晶振-----------
        RCC_DeInit(); //初始化為缺省值
        RCC_HSEConfig(RCC_HSE_ON); //使能外部的高速時鐘
        while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); //等待外部高速時鐘使能就緒
        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //使能預取指緩存
        FLASH_SetLatency(FLASH_Latency_2); //設置FLASH存儲器2延時周期
        RCC_HCLKConfig(RCC_SYSCLK_Div1); //AHB時鐘等于系統時鐘HCLK = SYSCLK
        RCC_PCLK2Config(RCC_HCLK_Div1); //高速AHB時鐘(PCLK2)PCLK2 =  HCLK
        RCC_PCLK1Config(RCC_HCLK_Div2); //低速AHB時鐘(PCLK1)PCLK1 = HCLK/2
        RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); //PLLCLK = 8MHZ * 9 =72MHZ
        RCC_PLLCmd(ENABLE); //Enable PLLCLK
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //等待 PLLCLK 準備好
            RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //選擇 PLL 為系統時鐘
        while(RCC_GetSYSCLKSource()!=0x08); //等待系統使用PLL為系統時鐘
        //---------打開相應外設時鐘--------------------
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1,  ENABLE );
        }


        /*******************************************************************************/
        /* 函數名  : GPIO_Configuration                                                */
        /* 功能    : 初始化GPIO外設                                                    */
        /* 輸入    : None                                                              */
        /* 輸出    : None                                                              */
        /* 返回    : None                                                              */
        /*******************************************************************************/
        void GPIO_Configuration(void)
        {
        GPIO_InitTypeDef GPIO;

         

        GPIO.GPIO_Pin =GPIO_Pin_9;
        GPIO.GPIO_Speed =GPIO_Speed_50MHz;
        GPIO.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOA,&GPIO); //端口初始化

        GPIO.GPIO_Pin =GPIO_Pin_10;

        GPIO.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA,&GPIO); //端口初始化
        }

         

         

        /*******************************************************************************/
        /* 函數名  : Delay_MS                                                          */
        /* 功能    : 軟件延時                                                          */
        /* 輸入    : 1ms                                                               */
        /* 輸出    : None                                                              */
        /* 返回    : None                                                              */
        /*******************************************************************************/
         void Delay_MS(u16 dly)
        {
        u16 i,j;
        for(i=0;i<dly;i++)
        for(j=1000;j>0;j--);
        }


        void USART_Configuration(void) //初始化USART
        { USART_InitTypeDef USART_InitStructure; //聲明參數結構
        USART_InitStructure.USART_BaudRate =  9600; //速率9600
        USART_InitStructure.USART_WordLength =  USART_WordLength_8b; //數據長度
        USART_InitStructure.USART_StopBits =   USART_StopBits_1; //停止位
        USART_InitStructure.USART_Parity =  USART_Parity_No; //奇偶校驗
        USART_InitStructure.USART_HardwareFlowControl =  USART_HardwareFlowControl_None; //硬件流
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //發送接收使能
        USART_Init(USART1, &USART_InitStructure); //根據USART_InitStruct中指定的參數初始化外設USART1寄存器

        USART_Cmd(USART1,ENABLE);//開啟USART外設


        }
        /*******************************************************************************/
        /* 函數名  : fputc                                                              */
        /* 功能    : 重定向printf輸出到USART1                                           */
        /* 輸入    : int ch 字符  FILE *f 文件指針                                      */
        /* 輸出    : ch                                                                 */
        /* 返回    : ch                                                                 */
        /********************************************************************************/


        int fputc(int ch,FILE *f)
        {
        //ch送給USART1
        USART_SendData(USART1, ch);
        //等待發送完畢
        while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET) { }
        //返回ch
        return(ch);
        }
        /*******************************************************************************/
        /* 函數名  : main                                                              */
        /* 功能    : 主函數                                                            */
        /* 輸入    : None                                                              */
        /* 輸出    : None                                                              */
        /* 返回    : None                                                              */
        /*******************************************************************************/
        int  main(void)
        {

        u8 i=58;
        RCC_Configuration();
        GPIO_Configuration();
        USART_Configuration();

         

        while(1)
        {
         
            printf("\n\tqq 2519286938");
        printf("\n\ti value is   %d",i);
        printf("\n\ti value is   %o",i);
        printf("\n\ti value is   %d,  %d",i+i,i*i);
        printf("\n\t-----------------------------");


        }

        }

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮