STM32单片机串口通讯代码

来源:本站
导读:目前正在解读《STM32单片机串口通讯代码》的相关信息,《STM32单片机串口通讯代码》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《STM32单片机串口通讯代码》的详细说明。
简介:在STM32开发中,串口是我们最常用的接口。通过串口,我们很方便地把数据输出到电脑,方便我们进行程序调试。下面我们来看看STM32的串口通讯代码。


要实现串口通讯,我们要进行下面几个步骤:

首先:要打开GPIO口的时钟和串口模块时钟。在圆点博士小四轴中,我们用的是GPIOA和COM1模块。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

其次:要指定GPIO口,即确定哪些IO是用于串口通讯的。记得使用GPIO_Mode_AF_PP模式

GPIO_InitStructure.GPIO_Pin = BS004_COM1_TX; //圆点博士:设置PA9管脚为串口TX

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //圆点博士:设置串口TX最大允许输出速度

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //圆点博士:设置串口TX为输出

GPIO_Init(GPIOA, &GPIO_InitStructure);

//

GPIO_InitStructure.GPIO_Pin = BS004_COM1_RX; //圆点博士:设置PA9管脚为串口RX

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //圆点博士:设置串口RX为输入

GPIO_Init(GPIOA, &GPIO_InitStructure);

第三步:设置串口模块参数,如波特率,奇偶校验这些。

USART_InitStructure.USART_BaudRate = 115200; //圆点博士:设置串口波特率为115200

USART_InitStructure.USART_WordLength = USART_WordLength_8b; //圆点博士:设置串口数据长度为8位

USART_InitStructure.USART_StopBits = USART_StopBits_1; //圆点博士:设置串口停止位长度为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); //圆点博士:设置串口参数

第四步:如果使用串口中断的话,还要设置中断优先级。下面例子设置为最高优先级0。

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

最后一步,就是打开中断,并使能串口模块拉。

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); //圆点博士:允许接收中断

USART_Cmd(USART1, ENABLE);

上面例子只启动了接收中断。这样,当STM32串口接收到数据的时候,代码就会自动跳转到中断代码里面执行对应的操作。

那么,对于发送,怎么办呢? 我们采用查询的方式来发送。

void BS004_COM1_Send_Char(unsigned char ascii_code) //圆点博士:发送一个字符

{

USART_SendData(USART1,ascii_code);

while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){} //圆点博士:等待直到发送完成

}

如过要发送单字符,使用下面的方法:

BS004_COM1_Send_Char('/'); //圆点博士:发送字符/

BS004_COM1_Send_Char(13); //圆点博士:发送回车字符

如过要发送字符串,则使用下面的方法。

void BS004_COM1_Send_Str_Body(unsigned char* str_buf) //圆点博士:发送一个指定长度的字符串

{

unsigned char i,str_len;

str_len=0;

for(i=0;i<64;i++)

{

str_len++;

if(str_buf[i]=='.') break;

}

for(i=0;i

}

在上面的例子中,使用了符号.作为字符串结束标志。

提醒:《STM32单片机串口通讯代码》最后刷新时间 2024-03-14 01:09:43,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《STM32单片机串口通讯代码》该内容的真实性请自行鉴别。