微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > Hallo world!

Hallo world!

时间:10-02 整理:3721RD 点击:

拿到我挚爱的NUCLEO-F412ZG也有一段时间了,总是在贪恋于它的开发中却忘了跟大家分享,今天给大家带来的是一个基础教程Hallo world!

Hallo world!好像是每个程序员必不可少的一句话吧,他好像代表着没一次开发的第一次成功的demo,那么今天我们也来配置一下我们的串口程序  打印出Halloworld!吧

当然在串口配置之前我们需要用到的是STM32CubeMX这个是STM32给我们提供的一个单片机基本配置的软件,我们可以在这个软件中直接找到NUCLEO-F412ZG这块开发板,当然我们也可以选择STM32F412ZGT6这款单片机进行配置


然后我们进行一个引脚和时钟等等配置的工作,按照下图这样配制出工程文件


进入工程  我们进行串口程序的配置

UartHandle.Instance        = USART3;

UartHandle.Init.BaudRate   = 9600;

UartHandle.Init.WordLength = UART_WORDLENGTH_8B;

UartHandle.Init.StopBits   =UART_STOPBITS_1;

UartHandle.Init.Parity     =UART_PARITY_ODD;

UartHandle.Init.HwFlowCtl  = UART_HWCONTROL_NONE;

UartHandle.Init.Mode       =UART_MODE_TX_RX;

UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;

还是96n81的习惯

配置串口中断

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_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);

}

/**

  *@brief UART MSP De-Initialization

*        This function frees thehardware resources used in this example:

*          - Disable thePeripheral's clock

*          - Revert GPIO and NVICconfiguration to their default state

  *@param huart: UART handle pointer

  *@retval None

  */

void HAL_UART_MspDeInit(UART_HandleTypeDef*huart)

{

/*##-1- Reset peripherals##################################################*/

USARTx_FORCE_RESET();

USARTx_RELEASE_RESET();

  /*##-2- Disable peripherals and GPIO Clocks#################################*/

  /*Configure UART Tx as alternate function */

HAL_GPIO_DeInit(USARTx_TX_GPIO_PORT, USARTx_TX_PIN);

  /*Configure UART Rx as alternate function */

HAL_GPIO_DeInit(USARTx_RX_GPIO_PORT, USARTx_RX_PIN);

}

当然我们要是使用printf打印的话必不可少一下程序

/* Private typedef-----------------------------------------------------------*/

/* Private define------------------------------------------------------------*/

/* Private macro -------------------------------------------------------------*/

/* Private variables---------------------------------------------------------*/

/* UART handler declaration */

UART_HandleTypeDef UartHandle;

/* Private function prototypes-----------------------------------------------*/

#ifdef __GNUC__

/* With GCC/RAISONANCE, small printf(option LD Linker->Libraries->Small printf

  set to 'Yes') calls __io_putchar() */

#define PUTCHAR_PROTOTYPE int__io_putchar(int ch)

#else

#define PUTCHAR_PROTOTYPE int fputc(int ch,FILE *f)

#endif /* __GNUC__ */

static void SystemClock_Config(void);

static void Error_Handler(void);

OK串口配置工作完成

主函数打印hallo world!



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top