实验三 串口通信实验【内容充实】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);
}