3180|5

441

帖子

3

TA的资源

纯净的硅(高级)

楼主
 

【 ST NUCLEO-H743ZI测评】+ 4、串口输出 [复制链接]

本帖最后由 TL-LED 于 2020-5-15 14:52 编辑

    这篇来学习下串口的使用,使用串口输出一串字符到PC机。HAL 库之前没怎么使用过,和之前的标准库还是有些区别。

 

    一、硬件电路

    使用ST-LINK虚拟串口来与PC机通信

    1.1、仿真器接口

 

 

    1.2、MCU接口

    MCU使用的端口是PD8和PD9端口。

 

    二、程序

 

    2.1、main.c

int main(void)
{
	uint8_t txdat[100]="www.eeworld.com.cn-stm32h743 usart test\r\n";
  CPU_CACHE_Enable();
  HAL_Init();
  SystemClock_Config();
	LED_Init();
	KEY_Init();
	UART_Init();
  while (1)
  {
	
			led1_tog();
			HAL_Delay(100);
			led2_tog();
			HAL_Delay(100);
			led3_tog();
			HAL_Delay(100);
			HAL_UART_Transmit(&UartHandle, txdat, sizeof(txdat), 100);
  }
}

 

    2.2、usart.c

#include "config.h"

UART_HandleTypeDef UartHandle;


void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{  
  GPIO_InitTypeDef  GPIO_InitStruct;
  
  /*##-1- Enable peripherals and GPIO Clocks #################################*/
  /* Enable GPIO TX/RX clock */
  USARTx_TX_GPIO_CLK_ENABLE();
  USARTx_RX_GPIO_CLK_ENABLE();

  /* Enable USARTx clock */
  USARTx_CLK_ENABLE(); 
  
  /*##-2- Configure peripheral GPIO ##########################################*/  
  /* UART TX GPIO pin configuration  */
  GPIO_InitStruct.Pin       = USARTx_TX_PIN;
  GPIO_InitStruct.Mode      = GPIO_MODE_AF_PP;
  GPIO_InitStruct.Pull      = GPIO_PULLUP;
  GPIO_InitStruct.Speed     = GPIO_SPEED_FREQ_VERY_HIGH;
  GPIO_InitStruct.Alternate = USARTx_TX_AF;

  HAL_GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStruct);

  /* UART RX GPIO pin configuration  */
  GPIO_InitStruct.Pin = USARTx_RX_PIN;
  GPIO_InitStruct.Alternate = USARTx_RX_AF;

  HAL_GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_InitStruct);
}



void HAL_UART_MspDeInit(UART_HandleTypeDef *huart)
{
  /*##-1- Reset peripherals ##################################################*/
  USARTx_FORCE_RESET();
  USARTx_RELEASE_RESET();

  /*##-2- Disable peripherals and GPIO Clocks #################################*/
  /* Configure USART3 Tx as alternate function  */
  HAL_GPIO_DeInit(USARTx_TX_GPIO_PORT, USARTx_TX_PIN);
  /* Configure USART3 Rx as alternate function  */
  HAL_GPIO_DeInit(USARTx_RX_GPIO_PORT, USARTx_RX_PIN);
}


void UART_Init(void)
{
	UartHandle.Instance        	 = USART3;
  UartHandle.Init.BaudRate     = 115200;
  UartHandle.Init.WordLength   = UART_WORDLENGTH_8B;
  UartHandle.Init.StopBits     = UART_STOPBITS_1;
  UartHandle.Init.Parity       = UART_PARITY_NONE;
  UartHandle.Init.HwFlowCtl    = UART_HWCONTROL_NONE;
  UartHandle.Init.Mode         = UART_MODE_TX_RX;
  UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;
  UartHandle.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
	if(HAL_UART_DeInit(&UartHandle) != HAL_OK)
  {
    //Error_Handler();
  }  
  if(HAL_UART_Init(&UartHandle) != HAL_OK)
  {
    //Error_Handler();
  }
}

    2.3、usart.h

    

#ifndef __USART_H
#define __USART_H

#define USARTx                           USART3
#define USARTx_CLK_ENABLE()              __HAL_RCC_USART3_CLK_ENABLE()
#define USARTx_RX_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOD_CLK_ENABLE()
#define USARTx_TX_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOD_CLK_ENABLE()

#define USARTx_FORCE_RESET()             __HAL_RCC_USART3_FORCE_RESET()
#define USARTx_RELEASE_RESET()           __HAL_RCC_USART3_RELEASE_RESET()

/* Definition for USARTx Pins */
#define USARTx_TX_PIN                    GPIO_PIN_8
#define USARTx_TX_GPIO_PORT              GPIOD
#define USARTx_TX_AF                     GPIO_AF7_USART3
#define USARTx_RX_PIN                    GPIO_PIN_9
#define USARTx_RX_GPIO_PORT              GPIOD
#define USARTx_RX_AF                     GPIO_AF7_USART3

extern UART_HandleTypeDef UartHandle;
void UART_Init(void);

#endif 

    三、运行结果

 

    串口间隔输出数据

    

此帖出自stm32/stm8论坛

最新回复

如果可以写的更加详细就更好了,再增加点扩展功能举一反三之类的   详情 回复 发表于 2020-5-27 23:16
点赞 关注
 

回复
举报

86

帖子

758

TA的资源

一粒金砂(中级)

沙发
 

好资料,谢谢楼主。

这种软硬都有的资料,最有参考价值了

此帖出自stm32/stm8论坛
 
 

回复

9795

帖子

24

TA的资源

版主

板凳
 
再来点硬核的
此帖出自stm32/stm8论坛

点评

好的,  详情 回复 发表于 2020-5-28 15:09
 
 

回复

4856

帖子

3

TA的资源

版主

4
 

如果可以写的更加详细就更好了,再增加点扩展功能举一反三之类的

此帖出自stm32/stm8论坛

点评

可以的, 还在学习!  详情 回复 发表于 2020-5-28 15:10
 
 
 

回复

441

帖子

3

TA的资源

纯净的硅(高级)

5
 

好的,

此帖出自stm32/stm8论坛
 
 
 

回复

441

帖子

3

TA的资源

纯净的硅(高级)

6
 
led2015 发表于 2020-5-27 23:16 如果可以写的更加详细就更好了,再增加点扩展功能举一反三之类的

可以的, 还在学习!

此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表