• <label id="gmp5l"></label>

    <li id="gmp5l"></li>
      • 您好,歡迎訪問上海意泓電子科技有限責(zé)任公司網(wǎng)站!
        4新聞資訊
        您的位置: 首頁 ->  新聞資訊 -> 單片機(jī)

        ?STM32下Keil IDE中Printf函數(shù)的使用

        文章出處:單片機(jī) 責(zé)任編輯:上海意泓電子科技有限責(zé)任公司 發(fā)表時(shí)間:
        2018
        05-20

        請?jiān)贛DK(keil)工程屬性的“Target“-》”Code Generation“中勾

        選”Use MicroLIB

         

        前提是你有一個(gè)完整keil的工程 比如ADC的調(diào)試的時(shí)候很多時(shí)候用到串口 這里教你怎么樣使

        用Printf 函數(shù)

        紅色字句為重點(diǎn)?。。。?!

        若使得在程序中使用Printf需做一下幾步
        1,輸入輸出文件包含#include
        2,在程序下添加宏定義代碼

        /* Private function prototypes -----------------------------------------------*/

        #ifdef __GNUC__
                 /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf set to 'Yes') calls __io_putchar() */
               #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
             #else
              #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
            #endif /* __GNUC__ */
         
           /* Private functions ---------------------------------------------------------*/

        3,添加如下2個(gè)函數(shù) usart配置 和 重定向 C庫的printf函數(shù)

         /* System Clocks Configuration */


        void RCC_Configuration(void)
        {    
          /* Enable GPIO clock */
          RCC_APB2PeriphClockCmd(USARTy_GPIO_CLK | USARTz_GPIO_CLK | RCC_APB2Periph_AFIO, ENABLE);

        #ifndef USE_STM3210C_EVAL
          /* Enable USARTy Clock */
          RCC_APB2PeriphClockCmd(USARTy_CLK, ENABLE); 
        #else
          /* Enable USARTy Clock */
          RCC_APB1PeriphClockCmd(USARTy_CLK, ENABLE); 
        #endif
          /* Enable USARTz Clock */
          RCC_APB1PeriphClockCmd(USARTz_CLK, ENABLE);  
        }

        /* System Clocks Configuration */

         

        /* Configure the GPIO ports */

        void GPIO_Configuration(void)
        {
          GPIO_InitTypeDef GPIO_InitStructure;

        #ifdef USE_STM3210C_EVAL
          /* Enable the USART3 Pins Software Remapping */
          GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, ENABLE);
          
          /* Enable the USART2 Pins Software Remapping */
          GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);  
        #elif defined(USE_STM3210B_EVAL) || defined(USE_STM32100B_EVAL)
          /* Enable the USART2 Pins Software Remapping */
          GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);
        #endif

          /* Configure USARTy Rx as input floating */
          GPIO_InitStructure.GPIO_Pin = USARTy_RxPin;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
          GPIO_Init(USARTy_GPIO, &GPIO_InitStructure);
          
          /* Configure USARTz Rx as input floating */
          GPIO_InitStructure.GPIO_Pin = USARTz_RxPin;
          GPIO_Init(USARTz_GPIO, &GPIO_InitStructure);  
          
          /* Configure USARTy Tx as alternate function push-pull */
          GPIO_InitStructure.GPIO_Pin = USARTy_TxPin;
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
          GPIO_Init(USARTy_GPIO, &GPIO_InitStructure);

          /* Configure USARTz Tx as alternate function push-pull */
          GPIO_InitStructure.GPIO_Pin = USARTz_TxPin;
          GPIO_Init(USARTz_GPIO, &GPIO_InitStructure); 
        }

        /* Configure the GPIO ports */

         

        /* USARTy configuration ------------------------------------------------------*/

        void USART_Configuration()
        {

        USART_InitTypeDef USART_InitStructure;
         USART_InitStructure.USART_BaudRate = 230400;
          USART_InitStructure.USART_WordLength = USART_WordLength_8b;
          USART_InitStructure.USART_StopBits = USART_StopBits_1;
          USART_InitStructure.USART_Parity = USART_Parity_Even;
          USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
          USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
          
          /* Configure USARTy */
          USART_Init(USARTy, &USART_InitStructure);
          /* Configure USARTz */
          USART_Init(USARTz, &USART_InitStructure);

        }

        /* USARTy configuration ------------------------------------------------------*/

         

        /*  Retargets the C library printf function to the USART.  */
        PUTCHAR_PROTOTYPE
        {
        USART_SendData(USART1, (uint8_t) ch);


        while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
        {}

        return ch;
        }

        /*  Retargets the C library printf function to the USART.  */

        3,然后就可以在main()調(diào)用

        printf("The is a example!" );

        printf("%s%c%c%c%c%c%s",
                   "#**",
                   Value/256,Value%6,
                  '&',
                   Value_2/256,Value_2%6,
                  "**%");

        之類的輸出函數(shù)


        上海意泓電子科技有限責(zé)任公司 版權(quán)所有 未經(jīng)授權(quán)禁止復(fù)制或鏡像

        CopyRight 2020-2025 www.jlodreman.com All rights reserved   滬ICP備2021005866號

        亚洲人成影院在线观看,91综合永久在线观看,欧洲亚洲日韩国产AV一级,中文字幕在线视频播放
      • <label id="gmp5l"></label>

        <li id="gmp5l"></li>