嵌入式软件设计(串口调试)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        串口一般是大家学习嵌入式遇到的第一个硬件协议。串口比较简单,常用的协议有232、485这些。实际开发中,串口用途很多,比如打印调试、固件下载、参数设置、上位机通讯等等。今天,可以趁着这个机会学习一下串口的基本编写方法。

1、查看main函数

int main(void)
{
  uint8_t ch;

  /*115200 8-N-1 */
  USART_Config();
	
  while(1)
  {	
    ch = get_data();
		
	send_data('\r');
	send_data('\n');
	
	send_data(ch);
	send_data(ch);
  }	
}

        整个流程还是比较清晰的,主要是USART_Config函数、get_data函数、send_data函数。从代码内容看,这应该是一个loopback函数,主要把输入的内容再回环回去。

2、USART_Config函数

void USART_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;

	DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);
	DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);

	GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure);
	
	USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;
	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(DEBUG_USARTx, &USART_InitStructure);	
	
	USART_Cmd(DEBUG_USARTx, ENABLE);	    
}

        根据内容分析,主要有两个部分。一个GPIO_InitStructure,一个是USART_InitStruture。前面一个是定义GPIO属性,后面主要是定义串口属性。涉及到串口属性的,主要就是波特率、字长、停止位、校验、流控制、模式的等等。

3、接收数据

uint8_t get_data()
{
    while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET);

	return (int)USART_ReceiveData(DEBUG_USARTx);
}

        串口接收函数,注意这里面有死循环的语句。

4、发送数据

void send_data(uint8_t ch)
{
	USART_SendData(DEBUG_USARTx,ch);
		
	while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);
}

5、其他

        测试的时候,发现复位并不能让程序重启。需要关掉电源、重新上电后才能观察到实验结果。另外实验的过程中需要一个串口工具,比如putty都可以。此外,开发板启动后有两个串口,一定要选usb2uart那个,不能选错。

猜你喜欢

转载自blog.csdn.net/feixiaoxing/article/details/125128924
今日推荐