【STM32+HAL】CUBEMX初始化配置

一、所用工具:

1、芯片: STM32F407ZET6

2、STM32CubeMx软件

3、IDE: MDK-Keil软件

4、STM32F4xxHAL库

二、实现功能:

初始化CUBEMX及串口配置

三、HAL库配置步骤:

1、打开CUBEMX,新建工程

2、选择自己的芯片
3、选择调试器
4、配置为外部时钟源

5、配置详细时钟频率

6、开启异步串口通信
7、命名工程,不要带中文,选择IDE
8、勾选“仅生成比原的库文件”,“生成对应的.c/.h文件” 

至此,CUBEMX初始化配置完成

五、MDK_ARM配置

1、初始化设置

 点击 确定 -> ok,完成配置

2、串口重定向

在自定义代码四区输入以下代码,头文件最好添加在USER CODE BEGIN Includes区

#include "stdio.h"
int fputc(int ch, FILE *f)
{
    HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
    return ch;
}

int fgetc(FILE *f)
{
    uint8_t ch = 0;
    HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
    return ch;
}

3、串口接收数据
#include "string.h"
#include "stdio.h"
#include "stdlib.h"

#define RXBUFFERSIZE  256  

char RxBuffer[RXBUFFERSIZE],rx_buf[5];
uint8_t aRxBuffer;			
uint8_t Uart1_Rx_Cnt = 0;	
int num=0;

  HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1);	


void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    UNUSED(huart);
    if(huart==&huart1){
	    if(Uart1_Rx_Cnt >= 255) {          //数据溢出判定
		    Uart1_Rx_Cnt = 0;
		    memset(RxBuffer,0x00,sizeof(RxBuffer));
		    HAL_UART_Transmit(&huart1, (uint8_t *)"OVERFLOW", 10,0xFFFF); 	
	    }
	    else{
	    	RxBuffer[Uart1_Rx_Cnt++] = aRxBuffer; 
	    	if((RxBuffer[Uart1_Rx_Cnt-1] == 0x0A)&&(RxBuffer[Uart1_Rx_Cnt-2] == 0x0D)) {                   //帧头帧尾判定
			    strcpy(rx_buf,RxBuffer); 
			    num=atoi(rx_buf);
 
                while(HAL_UART_GetState(&huart1) == HAL_UART_STATE_BUSY_TX); 
			    Uart1_Rx_Cnt = 0;
			    memset(RxBuffer,0x00,sizeof(RxBuffer)); 
		    }
	    }
	    HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1); 
    }
}

六、源码提供

【免费】【STM32+HAL】CUBEMX初始化配置及串口初始化

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值