历史上的今天
今天是:2024年12月10日(星期二)
2019年12月10日 | WS103C8例程——串口2【worldsing笔记】
2019-12-10 来源:eefocus
在超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功能;
史海拾趣
|
有两个键↑,↓.根据按键的时间长短,分成3个等级,从0000开始置数,最大可达9999。第一个等级,按↑递增很慢,按键时间超过5秒,进入第二个等级,递增比原来快多了,继续按键5秒,进入第三等级,递增超快,只看到最高位变化,按键停止后。再次按键 ...… 查看全部问答> |
|
printf的格式控制的完整格式: % - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少。 ②-:有-表示左对齐输出,如省略表示右对齐输出。 ③0:有0表示指定空位填0,如省略表示指定空位不填。 ④m.n ...… 查看全部问答> |
|
我想把ucos移植去2812,但是在烧写中遇到了一些问题,这个问题我在论坛见过,不过不清楚具体是怎样解决的~ 下面是遇到的状况: 使用ti的烧写插件烧写FLASH时出现以下提示: Code Composer could not locate: FlashAPIInterface.c Would you lik ...… 查看全部问答> |
|
有一个模数转换的芯片产生的数进入430之后处理,产生一系列的结果,大概有几百个数,float型的,ram存不下,所以要存在flash里,请教一下flash里哪些段可以擦除,应该怎么操作?… 查看全部问答> |
|
数据采集仪器原来两个通道都是加速度传感器,前段时间买了个电涡流位移传感器,想一个仪器同时采集加速度和位移传感器信号,在不改变采集电路的情况下能否实现兼容?电涡流位移传感器输出是-2V到-18V.是直流和交流的耦合输出形式,我只需要交流部分 ...… 查看全部问答> |
|
工作情况:输入24V,输出12V/5A, IC自身规格是12V/6A输出。这样算来留有17%的余量,为什么满载(12V/5A)工作一段时间后IC会挂?现象IC发烫。 有时开机瞬间IC也会挂掉,麻烦大神支招。谢谢! … 查看全部问答> |




