zoukankan      html  css  js  c++  java
  • 基于STM32F10X LIB 3.5的串口配置

    做的一个串口GPS模块驱动的,作为串口配置例程。

    网上的例程多为早期LIB,这边使用3.5的LIB

    做法稍有不同,顺序基本一样,原理一样

    代码有剪裁,仅为基本思路



      extern int GPS_Init(void)
    
    {
      char str1[10];
      str1[0] = 0; 
      RCC_Configuration(); //开启对应的时钟
      GPIO_Configuration();  //配置GPIO端口,串口配置,中断等
      GPS_Main();
    }
    
    void RCC_Configuration(void)   //
    
    {   
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);  //开启APB2上GPIOA 的时钟
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);  //开启串口时钟
    
    }
    
    
    void GPIO_Configuration(void)
    
    {
         GPIO_InitTypeDef        gpio_init;
        USART_InitTypeDef       usart_init;
        USART_ClockInitTypeDef  usart_clk_init;
                                                                    /* ----------------- INIT USART STRUCT ---------------- */
        usart_init.USART_BaudRate            = 9600;
        usart_init.USART_WordLength          = USART_WordLength_8b;
        usart_init.USART_StopBits            = USART_StopBits_1;
        usart_init.USART_Parity              = USART_Parity_No ;
        usart_init.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        usart_init.USART_Mode                = USART_Mode_Rx | USART_Mode_Tx;
    
    
                                                                    /* Configure GPIOA.9 as push-pull                       */
        gpio_init.GPIO_Pin   = GPIO_Pin_9;
        gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
        gpio_init.GPIO_Mode  = GPIO_Mode_AF_PP;  //设置复用
        GPIO_Init(GPIOA, &gpio_init);
    
                                                                    /* Configure GPIOA.10 as input pull up                 */
        gpio_init.GPIO_Pin   = GPIO_Pin_10;
        gpio_init.GPIO_Mode  = GPIO_Mode_IPU;
        GPIO_Init(GPIOA, &gpio_init);
    
    
     1 /*中断配置*/
     2 
     3 
     4 NVIC_InitTypeDef   NVIC_InitStructure;
     5   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
     6   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
     7   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
     8   NVIC_Init(&NVIC_InitStructure);
     9                                                                
    10 
    11 /* ------------------ SETUP USART1 -------------------- */
    12     USART_Init(USART1, &usart_init);
    13     //USART_ClockInit(USART1, &usart_clk_init);
    14     USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  //rx interrupt,
    15     USART_Cmd(USART1, ENABLE);
    16 
    17 }




    个人进行串口调试的几个方法:
    1.将TX,RX短接,自发自收,这是最简单的
    2.做一根串口调试线与电脑连接,只需要3根线,对应电脑串口的RX,TX,GND,将MCU的TX与电脑RX相连,RX与电脑的TX相连接,配置好串口相关参数,就可以进行调试了,建议使用comtools这个工具。
    3.示波仪测试,在串口未发送数据时,tx3.3V,发送时电压拉低1.2V,示波仪ch1 1.00v1.00MS   方波

  • 相关阅读:
    perl shell交换示例
    python语法测试
    python使用带汉字的正则表达式
    【zz】Perl数字与字符串间的自动转换
    python完成文件按行拆分按列重组。
    转载 python每次读入文件一行的问题(血的教训啊)
    工程总结
    perl 语言学习——从C/C++到perl
    perl双层哈希求长度
    visual studio 代码分析利器 FxCop
  • 原文地址:https://www.cnblogs.com/bandynewer/p/2515068.html
Copyright © 2011-2022 走看看