久久人妻精品人妻视频五月天一区二区三区,,自慰午夜喷水久久久av国产成人a视频高在线,,欧美日韩免费专区在线97精品国产手机

  • <cite id="cwywg"></cite>
    <button id="cwywg"></button>
  • <button id="cwywg"><source id="cwywg"></source></button>
    <button id="cwywg"><tbody id="cwywg"></tbody></button>
  • <button id="cwywg"></button>
  • 
    
  • logo logo
    • BANNER
    • BANNER
    • BANNER
    您的位置 : 首頁 > 新聞資訊 > 技術(shù)支持
    STM32下Keil IDE中Printf函數(shù)的使用
    發(fā)布者:江蘇瑞易通電子科技有限公司 人氣:879 發(fā)布日期:2021-04-23 10:10:40

    請(qǐng)?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ù)


    返回新聞列表