社区导航

 

搜索
查看: 452|回复: 5

[原创] 【 ST NUCLEO-H743ZI测评】+ 4、串口输出

[复制链接]

25

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2020-5-15 14:01 | 显示全部楼层 |阅读模式
本帖最后由 TL-LED 于 2020-5-15 14:52 编辑

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

 

    一、硬件电路

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

    1.1、仿真器接口

 

02.png

 

    1.2、MCU接口

    MCU使用的端口是PD8和PD9端口。 03.png

 

    二、程序

 

    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 

    三、运行结果

 

    串口间隔输出数据
01.png

    

此帖出自stm32/stm8论坛

回复

使用道具 举报

87

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2020-5-15 15:04 | 显示全部楼层

好资料,谢谢楼主。

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


回复

使用道具 举报

7357

TA的帖子

19

TA的资源

版主

Rank: 6Rank: 6

发表于 2020-5-15 20:53 来自手机 | 显示全部楼层
再来点硬核的

点评

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

回复

使用道具 举报

2424

TA的帖子

4

TA的资源

版主

Rank: 6Rank: 6

发表于 2020-5-27 23:16 | 显示全部楼层

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

点评

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

回复

使用道具 举报

25

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-5-28 15:09 | 显示全部楼层

好的,


回复

使用道具 举报

25

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-5-28 15:10 | 显示全部楼层
led2015 发表于 2020-5-27 23:16 如果可以写的更加详细就更好了,再增加点扩展功能举一反三之类的

可以的, 还在学习!


回复

使用道具 举报

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

关闭

站长推荐上一条 1/8 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

词云| Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-7-10 13:44 , Processed in 6.602356 second(s), 27 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表