STM32 UART4,UART5配置方式

2019-07-22来源: eefocus关键字:STM32  UART4  UART5  配置方式

昨天偶然用到STM32  UART4,UART5两个串口,我开始觉得配置很简单,就简单的配置了,但是怎么都调试部通,我试了1,2串口都没有问题,但是就是4,5不行,我查了一些资料,我相信自己的配置没有错,就是一直调试不通,只能用示波器看了,一看才知道是硬件引脚连错了,电路图上画的就是错的,芯片引脚写的都是错的,我无语了,以后仔细看芯片手册................


配置如下:


/*

 * 函数名:UART4_Config

 * 描述  :UART4 GPIO 配置,工作模式配置。115200 8-N-1

 * 输入  :无

 * 输出  : 无

 * 调用  :外部调用

 */

void UART4_Config(void)

{

                    //使能时钟

                    RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE);

                    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);


                    //配置接收管脚PC11

                    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;

                    //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

                    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

                    GPIO_Init(GPIOC, &GPIO_InitStructure);

                    //配置发送管脚PC10

                    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

                    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

                    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

                    GPIO_Init(GPIOC, &GPIO_InitStructure);

                    //波特率、字长、停止位、奇偶校验位、硬件流控制、异步串口为默认(被屏蔽字设置)

                    USART_InitStructure.USART_BaudRate = 115200;

                    USART_InitStructure.USART_WordLength = USART_WordLength_8b;

                    USART_InitStructure.USART_StopBits = USART_StopBits_1;

                    USART_InitStructure.USART_Parity = USART_Parity_No;

                    USART_InitStructure.USART_HardwareFlowControl =

                    USART_HardwareFlowControl_None;

                    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

                    USART_Init(UART4, &USART_InitStructure);


                    USART_ITConfig(UART4, USART_IT_RXNE, ENABLE);


                    USART_Cmd(UART4, ENABLE);


}


关键字:STM32  UART4  UART5  配置方式

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic468704.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32F工程移植注意事项
下一篇:STM32F429HAL库UART学习笔记

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32 USART1对PWM的影响,串口影响PWM

注意,USART1和TIM1是复用的,如果用TIM1产生PWM(PA9 / PA10),则USART1不应该用该管脚,可以用PB6/PB7。
发表于 2019-08-22

stm32103R8C6 捕捉2路pwm 串口打印捕捉数据

第一路使用定时器2的通道1,先捕捉一个上升沿,清楚所有数据开始捕捉下降沿,捕捉到下降沿后再捕捉一个上升沿。 第二路使用定时器4的通道4,使用其他通道的时候要注意,定时器的中断时CC4,设置上升沿和下降沿的时候也要改为通道4。//定时器2通道1输入捕获配置TIM_ICInitTypeDef TIM2_ICInitStructure;void TIM2_Cap_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; 
发表于 2019-08-22
stm32103R8C6 捕捉2路pwm 串口打印捕捉数据

STM32——使用PWM+DMA实现脉冲发送精确控制

之前用stm32写过脉冲发送的代码,用来控制步进电机,但是缺点明显,之前是用定时器中断做的,所以一但控制的电机多起来,MCU资源占用就很大,这在大多数情况下是不可接受的,更不用说多轴联动了。最近做的步进电机CAN总线控制系统,就想顺便重新写驱动。希望做到占用很少的MCU资源,实现脉冲发送的精确控制。既然是用来控制步进电机,那么脉冲的数量和频率一定要可控,要不然怎么实现电机的加减速曲线。于是就想到了DMA。DMA (直接存储器访问)DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料
发表于 2019-08-22
STM32——使用PWM+DMA实现脉冲发送精确控制

stm32入门——PWM输出控制直流电机变速

,ARR大于CCRx时输出为“有效”电平。注意,我这里用的是“有效”和“无效”,而不是“高”和“低”,也就是说有效电平可高可低,并非一定就是高电平。PWM模式、效电平极性,需要程序员自己配置相关的寄存器来实现。以下面的代码来讲解TIM1_PWM_Init(899,0);//不分频。PWM频率=72000/(899+1)=80Khz我们使用定时器1的通道1来输出一路PWM波,想详细了解定时器参数的设置的朋友可以参考(stm32入门——定时器中断),我这里简单介绍一下,这里的899设置的就是ARR的值,至于那个0是用来设置TIM1的频率的,不分频就代表TIM1的时钟频率和系统时钟相同,这里假设为72MHz。void
发表于 2019-08-22
stm32入门——PWM输出控制直流电机变速

STM32学习笔记(PWM输出)

本人采用Cube 进行的STM32库函数编程,PWM波的输出配置以及代码如下所示:(经过实际实验证明非常好用)以下为定时器PWM输出函数,注意:使用时一定要把原来输出函数注释掉。注释代码如下:// sConfigOC.OCMode = TIM_OCMODE_PWM1;// sConfigOC.Pulse = 0;// sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;// sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;// if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC
发表于 2019-08-22

STM32死机 调试时进入HardFault_Handler定位错误的方法

STM32在运行不正常的时候我们一般会进行调试看看问题出在了哪里。但是当STM32卡死后进行调试的时候会发现进入到了一个HardFault_Handler函数里,这是一个硬件错误处理函数。通过它和MDK配合可以定位程序最后卡死的原因。STM32卡死的原因有以下几种:数组越界操作;内存溢出,访问越界;堆栈过小;中断处理错误;电压供电异常。现在实验一个堆栈过小的错误,让MDK来检测这个问题然后定位错误。这个程序基于UCOSII 系统 #define TFTLCD_STK_PRIO  8 //任务的优先级#define TFTLCD_STK_SIZE  2 //任务的堆栈大小OS_ST
发表于 2019-08-22
STM32死机 调试时进入HardFault_Handler定位错误的方法

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved