电子产品世界 » 论坛首页 » 企业专区 » STM32 » 串口通信尝试


共7条 1/1 1 跳转至

串口通信尝试

助工
2016-03-28 21:32:23    评分

UASRT串口要传输数据根据传输数据方向,要设置GPIO_Mode_IN_FLOATING浮空输入(串行接收时)GPIO_Mode_AF_PP复用推挽输出(串行发送时)。

我先用PA9作为串口1TX引脚,用PA10作为串口1RX引脚,我对各个引脚的状态功能不是特别清楚,不过通过写了一些代码觉得应该是与该引脚的具体功能相对应有关,例如在串口通信时就应该设置成浮空输入和复用推挽输出,在这里提出我的理解如果理解有误欢迎各位前辈积极指正。

所以我如果实现串口通信首先需要配置GPIO和USART为指定状态:

void usart_init( void )
{//初始化结构体定义
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitS
tructure;
//使能串口时钟
RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1, ENABLE );
//指定PA9和PA10用于串口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置速度
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//设置推输出

GPIO_Init( GPIOA, &GPIO_InitStructure );//调用初始化函数完成初始化
//定义RX引脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//设置浮空输入


GPIO_Init( GPIOA, &GPIO_InitStructure );

USART_InitStructure.USART_BaudRate = 38400;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

USART_Init( USART1, &USART_InitStructure );
USART_Cmd( USART1, ENABLE );

USART_ITConfig(USART1,USRT_IT_TXE,ENABLE);

}

接收函数:

void void Uart1_Put(unsigned char ch)
{
USART_SendData(USART1,ch);//调用发送函数发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);//检查是否发送完毕
}



助工
2016-03-28 21:34:38    评分
2楼
最近有点懒差点忘了学习STM32

专家
2016-03-28 21:43:46    评分
3楼

以上的信息有误~~

请自查~~


专家
2016-03-29 08:28:29    评分
4楼

还是mbed好呀


助工
2016-03-30 11:09:30    评分
5楼
抓紧学习,哈哈

专家
2016-03-30 13:31:43    评分
6楼
话说,楼主 我这里有一个我自己设计的stm32f030的开发板,可以送给楼主 用于学习stm32

高工
2016-04-15 15:43:29    评分
7楼
引脚的配置需要参考具体的应用来配置成相应的模式,便于复用

共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]