zoukankan      html  css  js  c++  java
  • WS103C8例程——串口2【worldsing笔记】

    超MINI核心板 stm32F103C8最小系统板上调试Usart2功能:用Jlink 6Pin接口连接WStm32f103c8的Uart2,PC机向mcu发送数据,mcu收到数据后数据加1,回传给PC,并把
    D1 指示灯状态取反.

    image

    硬件连接:

    1、R27 悬空不焊接;

    2、将P输出TTL接口的TX连接到超MINI核心板 stm32F103C8最小系统板的RX2;

    3、将P输出TTL接口的RX连接到超MINI核心板 stm32F103C8最小系统板的TX2;

    串口配置uart2.c:

    /*-------------------------------------------------------
     * @ 功能:usart2Init()串口2初始化 9600, 8, N, 1
     *         PA2 -> TX2
     *         PA3 -> RX2
     * @ 参数:无 
     * @ 返回:无
     *-------------------------------------------------------
     */
    void usart2Init(void) 
    {
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
    
        RCC_APB2PeriphClockCmd(UART_GPIO_CLK | RCC_APB2Periph_AFIO, ENABLE);
        if(UART == USART1)
          RCC_APB2PeriphClockCmd(UART_CLK, ENABLE);
        else
          RCC_APB1PeriphClockCmd(UART_CLK, ENABLE);
            
    
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
        NVIC_InitStructure.NVIC_IRQChannel = UART_IRQ_N;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
    
        GPIO_InitStructure.GPIO_Pin = UART_RX_PIN; //RX 
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_Init(UART_GPIO, &GPIO_InitStructure);
    
        GPIO_InitStructure.GPIO_Pin = UART_TX_PIN; //TX
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(UART_GPIO, &GPIO_InitStructure);
    
      USART_StructInit(&USART_InitStructure);
    
        USART_Init(UART, &USART_InitStructure);
        
        USART_ITConfig(UART, USART_IT_RXNE, ENABLE);
        USART_Cmd(UART, ENABLE);
    }
    
    /*-------------------------------------------------------
     * @ 功能:中断接收,数据值+1再发送
     * @ 参数:无 
     * @ 返回:无
     *-------------------------------------------------------
     */
    void UART_IRQ_HANDLER(void) 
    {
        char ch;
        if (USART_GetITStatus(UART, USART_IT_RXNE) != RESET) 
        {
            ch = USART_ReceiveData(UART);
            usart2SendChar(ch + 1);
            LED_REV();
        }
    }
    
    /*-------------------------------------------------------
     * @ 功能:发送
     * @ 参数:无 
     * @ 返回:无
     *-------------------------------------------------------
     */
    void usart2SendChar(u8 ch) 
    {
        while (USART_GetFlagStatus(UART, USART_FLAG_TC) == RESET);
        USART_SendData(UART, (uint8_t)ch);
        while (USART_GetFlagStatus(UART, USART_FLAG_TC) == RESET);
    }

    uart2.h

    /********************************************************************************
      * @File   : uart1.h
      * @Author : worldsing
      * @Version: V0.1
      * @Date   : 2014/04/05
      * @Brief  :
      *******************************************************************************
      * @Attention:
      */
    #ifndef __UART1__
    #define __UART1__
    
    #include "stm32f10x.h"
    #include "system_stm32f10x.h"
    #include "stm32f10x_rcc.h"
    #include "stm32f10x_gpio.h"
    #include "stm32f10x_usart.h"
    #include "misc.h"
    #include "uart.h"
    
    
    #define UART               USART2
    #define UART_GPIO          GPIOA
    #define UART_CLK           RCC_APB1Periph_USART2
    #define UART_IRQ_N         USART2_IRQn
    #define UART_TX_PIN        GPIO_Pin_2
    #define UART_RX_PIN        GPIO_Pin_3
    #define UART_GPIO_CLK      RCC_APB2Periph_GPIOA
    #define UART_IRQ_HANDLER   USART2_IRQHandler
    
    
    void usart2Init(void); 
    void USART2_IRQHandler(void);
    void usart2SendChar(u8 ch);
    
    
    #endif
    
    //end of file

    上位机发送55,超MINI核心板 stm32F103C8最小系统板回复56,LED状态取反;

    image

    实物演示

    c9d19725f12e2a56479e535b8afeedbd

    be8a7fd3a55dff241eb4d5f29f625cc5

    功能连接说明:

    1、使用stm32F103C8最小系统板 Uart1 的232电平接口时把R26焊接成0R,P1的pin17, p18悬空;

    2、使用stm32F103C8最小系统板 Uart2 的232电平接口时把R27焊接成0R,R17、R12悬空、P2的pin2、pin3悬空;

    4、使用stm32F103C8最小系统板 Uart1 的TTL电平接口时把R26悬空,信号连接到P1的pin17, p18;

    5、使用stm32F103C8最小系统板 Uart2 的TTL电平接口时把R27悬空,信号连接到P3的pin9, pin12或连接到P2的pin2、pin3;

    6、使用stm32F103C8最小系统板 USB转串的TTL电平接口时,直接连接到P1的pin15,pin16;

    7、使用stm32F103C8最小系统板 USB转串连接到CPU内部的uart1时,P1的pin17与pin15短接,pin18与pin16短接;

    8、使用stm32F103C8最小系统板 Uart2的485接口时,R17和R12焊接0R,P2的pin2、pin3悬空,P3的pin9, pin12悬空,R27悬空;

    9、使用stm32F103C8最小系统板 USB接口连接到CPU是,焊接R14,R15为22R,R3,R4悬空,R1,R2悬空;

    10、使用stm32F103C8最小系统板 CAN接口连接到CPU是,焊接R1,R2为22R,R3,R4悬空,R14,R15悬空;

    11、使用stm32F103C8最小系统板 不焊接CPU时可以做独立的1通道USB转串功能;

    12、使用stm32F103C8最小系统板 不焊接CPU时可以做独立的2通道TTL转232功能;

    13、使用stm32F103C8最小系统板 不焊接CPU时可以做独立的1通道485转TTL功能,外置三级管;

    14、使用stm32F103C8最小系统板 不焊接CPU时可以做独立的1通道CAN转TTL功能;

  • 相关阅读:
    thread ---- join
    函数传参传的是啥的思考【java Python】
    关于 私有变量的访问问题【 java python]
    编程语言的某些 概念
    python 小整数池 和intern 【整理】
    [题解] uva 11354 Bond(kruskal最小生成树+倍增LCA)
    [题解] bzoj 1016 jsoi 2008 最小生成树计数 (kruskal最小生成树)
    [题解] bzoj 1821 jsoi 2010 Group 部落划分(kruskal最小生成树)
    [题解] uva 10369 Arctic Network(kruskal最小生成树)
    [题解] 洛谷 P1550 USACO 2008 OCT 打井Watering Hole (kruskal最小生成树)
  • 原文地址:https://www.cnblogs.com/worldsing/p/3653979.html
Copyright © 2011-2022 走看看