单片机 > 单片机程序设计 > 详情

WS103C8例程——串口2【worldsing笔记】

发布时间:2021-04-26 发布时间:
|

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

硬件连接:

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状态取反;

实物演示

功能连接说明:


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功能;

关键字:WS103C8  串口2  stm32F103C8 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C8051F020的UART