新手入门
- 积分
- 10
- 金钱
- 10
- 注册时间
- 2020-10-20
- 在线时间
- 2 小时
|
1金钱
各位大神,就这么点代码,然后仿照USB串口通信配置的RS232的通信,就简单的测试输出,可是串口调试助手一直都接收不到内容,是哪里配置错了吗???
#include "sys.h"
#include "delay.h"
#include "usart.h"
UART_HandleTypeDef UART2_Handle;//Handle是个句柄,会有很多地方用到,所以设置为全局变量
void UART2_Init() //USART2串口初始化
{
UART2_Handle.Instance=USART2; //#define USART2 ((USART_TypeDef *) USART2_BASE) Instance是基地址
UART2_Handle.Init.BaudRate=115200; //波特率
UART2_Handle.Init.WordLength=UART_WORDLENGTH_8B; //传输8字节
UART2_Handle.Init.StopBits=USART_STOPBITS_1; //停止位 为 1
UART2_Handle.Init.HwFlowCtl=UART_HWCONTROL_NONE; //硬件流控制关闭
UART2_Handle.Init.Mode=UART_MODE_TX_RX; //发送接收都开启
UART2_Handle.Init.Parity=UART_PARITY_NONE; //不使用奇偶校验位
HAL_UART_Init (&UART2_Handle);
}
void HAL_UART_MspInit(UART_HandleTypeDef *huart)//MCU有关的初始化,外设的复用映射,串口初始化,中断优先级设置一般放在这里,HAL_UART_MspInit会被HAL_UART_Init调用,只要调用HAL_UART_Init,都会调用HAL_UART_MspInit这个函数,它是通用的
{
GPIO_InitTypeDef GPIO_Initure;
if(huart->Instance==USART1)//如果判断为串口2,如果是串口2,就进行串口2的初始化
{
__HAL_RCC_GPIOA_CLK_ENABLE(); //使能GPIOA时钟
__HAL_RCC_USART2_CLK_ENABLE(); //使能USART2时钟
//COM2: PA2是输出, PA3是输入
GPIO_Initure.Pin=GPIO_PIN_2; //PA2,3的配置一样的时候,可以用或。但是串口一个输入,一个输出,我们先这样。
GPIO_Initure.Mode=GPIO_MODE_AF_PP; //复用推挽输出
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_HIGH; //高速
GPIO_Initure.Alternate=GPIO_AF7_USART2; // 复用为USART2
HAL_GPIO_Init(GPIOA,&GPIO_Initure); // 参数1:HAL_GPIO_Init中有assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));其中IS_GPIO_ALL_INSTANCE(右键定义)定义了输入什么参数是有效的。
//参数2:GPIO_InitTypeDef 中的参数的有效性是对他结构体中的变量进行操作,所以使用定义结构体指针变量,传入结构体变量地址的方式
GPIO_Initure.Pin=GPIO_PIN_3; //PA2,3的配置一样的时候,可以用或。但是串口一个输入,一个输出,我们先这样。
GPIO_Initure.Mode=GPIO_MODE_INPUT; //输入
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_HIGH; //高速
GPIO_Initure.Alternate=GPIO_AF7_USART2; // 复用为USART2
HAL_GPIO_Init(GPIOA,&GPIO_Initure);
}
}
int main(void)
{
u8 Tbuffer[]="test1";
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(360,25,2,8); //设置F429时钟,180Mhz
delay_init(180); //初始化 delay延时函数
UART2_Init();
while(1)
{
HAL_UART_Transmit(&UART2_Handle,Tbuffer,sizeof(Tbuffer),1000);//超时时间是做什么的
delay_ms(300);
}
}
|
|