基于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   方波

原文地址:https://www.cnblogs.com/bandynewer/p/2515068.html