实验三 串口通信实验【内容充实】

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三串口通信实验

【实验目的】

1、掌握ARM Cortex-M3的串行口工作原理

2、掌握ARM Cortex-M3的UART寄存器配置方法

3、学习编程实现ARM Cortex-M3的UART通信

【实验仪器】

1、硬件:STM32F103CB开发板,ULINK(或JLINK)仿真器套件,PC机

2、软件: RealView MDK开发套件, WindowsXP。

【实验电路及连线】

串口的发送端U1_TX,接收端U1_RX,分别连接GPIO的PA9和PA10。

【实验内容】

1、熟悉RealView MDK开发套件的使用

2、建立一个简单的USART工程。

3、编写程序,实现STM32单片机通过串口1 发送一个字符串“STM32F103CB USART1 TEST!”,并在PC机的超级终端上显示。要求用printf函数输出。

【实验步骤、分析及结果(在下面写出你的代码)】

结果:

代码:

#include"stm32f10x_lib.h"

#include"stdio.h"

void GPIO_Configuration()

{

GPIO_InitTypeDef GPIO_InitStructure ;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA,&GPIO_InitStructure);

}

int fputc(int ch, FILE*f)

{

USART_SendData(USART1, (u8) ch);

while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET) ;

return ch;

}

void USART_Configuration(void)

{

USART_InitTypeDef USART_InitStructure;

//RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); ///////放到GPIO_Configuration

USART_ART_BaudRate=115200;

USART_ART_WordLength=USART_WordLength_8b; // 8位传输;

USART_ART_StopBits=USART_StopBits_1; //1个停止位

USART_ART_Parity=USART_Parity_No;

USART_ART_HardwareFlowControl=USART_HardwareFlowControl_ None; //禁止硬件流控制,禁止 RTS 和 CTS 信号

USART_ART_Mode=USART_Mode_Rx | USART_Mode_Tx; //全双工

USART_Init(USART1,&USART_InitStructure); //初始化UARTx

USART_Cmd(USART1,ENABLE); //使能串口一

}

main()

{

// u32 i;

// char a[]="STM32F103CB USART1 TEST!";

GPIO_Configuration();

USART_Configuration();

/*可以在发送之前清除标志位TC*/

printf("STM32F103CB USART1 TEST!");

while(1);

}

相关文档
最新文档