STM32 UART 初始化

发布者:dst2015最新更新时间:2019-08-19 来源: eefocus关键字:STM32  UART  初始化 手机看文章 扫描二维码
随时随地手机看文章

因为想用串口3,但配置了很长时间还是不行,为什么UART1,2行,UART3就不行的,最后原因是:使能GPIOB,端口时钟  USART3时钟,我只使能了UART3时钟,没有使能UART3所在端口GPIOB的时钟,所以导致无法正常启动串口3。

 

下面具体写下串口配置过程:
  1:系统时钟初始化,包括系统时钟和要开放的IO口和串口的时钟配置。
  2:IO口初始化,包括引脚,速率,输入输出模式等。
  3:配置USART的波特率,数据位等。

 


对应的3个函数,相当有条理

/--------------——————---------------------------------------------------------------------/

void  RCC_Configuration(void)

{

       RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE); //使能UART3所在GPIOB的时钟

       RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE); //串口时钟配置

}

 

void GPIO_Configuration(void)
{
      GPIO_InitTypeDef GPIO_InitStructure;

      // Configure USART3 Tx (PB.10) as alternate function push-pull 
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_Init(GPIOB,   &GPIO_InitStructure);

      // Configure USART3 Rx (PB.11) as input floating 
      GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_11;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;          
      GPIO_Init(GPIOB, &GPIO_InitStructure);

}

 

void USART_Configuration(void)

{

      USART_InitStructure.USART_BaudRate = 38400;
      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(USART3, &USART_InitStructure);
      // 使能 USART3
      USART_Cmd(USART3, ENABLE);

}


关键字:STM32  UART  初始化 引用地址:STM32 UART 初始化

上一篇:stm32芯片被锁,使用jlink就能轻轻松松解锁
下一篇:向STM32串口发送数据的标准函数

推荐阅读最新更新时间:2024-11-13 14:51

STM32移植cJson和FreeRTOS时,cjson解析和创建失败问题
一,环境:STM32+cJson+FreeRTOS+Heap_4.c 二,FREERTOS的内存:Heap_4 FreeRTOS8.0.1内存管理的最后一个堆模型Heap_4,貌似是在这一个版本才有的。所以找到的说明几乎没有。代码的开头注释也只是简单地说了一下实现了pvPortMalloc()和vPortFree()两个函数,并且能够对回收的内存块进行合并,减少碎片的出现。(A sample implementation of pvPortMalloc() and vPortFree() that combines (coalescences) adjacent memory blocks as they are free
[单片机]
<font color='red'>STM32</font>移植cJson和FreeRTOS时,cjson解析和创建失败问题
stm32发脉冲
发脉冲两种目的 1)速度控制 2)位置控制 速度控制目的和模拟量一样,没有什么需要关注的地方 发送脉冲方式为PWM,速率稳定而且资源占用少 stm32位置控制需要获得发送的脉冲数,有下面4种手段 1)每发送一个脉冲,做一次中断计数 2)根据发送的频率 发送的时间,获得脉冲数量,对于变速的脉冲,可以累计积分的方法来获得总脉冲 3)一个定时器作为主发送脉冲,另外一个定时器作为从,对发送的脉冲计数 4)使用DMA方式,例如共发送1000个脉冲,那么定义u16 per ,每发送一个脉冲,dma会从数组中更新下一个占空比字,数组最后一个字为0,表示停发脉冲 上面4种方法的用途和特点 1)对于低速率脉冲比较好,可以说低速发脉冲的首
[单片机]
STM32:I2C接口读写EEPROM(AT24C02)试验例程
硬件平台:stm32f10xZET6 开发环境:keil MDK uVisionv4.10 开发语言:C、ST_lib_3.5固件库 EEPROM:电可擦可编程只读存储器。 【stm32f10xZET6开发板的I2C外设物理层特点】 (1)两条串行总线:一条双向数据线(SDA),一条时钟线(SCL); (2)从设备地址唯一; (3)支持总线仲裁; (4)三种速率传输模式: 标准模式100kbit/s 快速模式400kbit/s 高速模式3.4Mbit/s (目前大多I2C设备尚不支持高速模式) (5)片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整; (6)连接到相同总线的IC数量受到总线的最大电容400p
[单片机]
STM32位带操作的详解
1. 什么是位带操作以及STM32中位带操作的区域 什么是位带操作?简单来说就是通过宏定义封装一些操作,让你可以像51单片机上去操作IO口,从而不用麻烦的去配置各种寄存器,在STM32中有两个地方实现了位带。其中一个是 SRAM 区的最低 1MB 范围,第二个则是片内外设区的最低 1MB 范围。这两个区中的地址除了可以像普通的 RAM 一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个 32 位的字。当你通过位带别名区访问这些字时,就可以达到访问原始比特的目的。 下图就是STM32中可以用于位带操作的区域了,片上SRAM的0x2000 0000到0x2010 0000和片上外设的0x4000 0000到
[单片机]
<font color='red'>STM32</font>位带操作的详解
STM32 USB 大容量存储器Mass Storage工程的讲解
程序可以兼容官方推出来的不同系列的评估版,所以程序里经常看见类似于#ifdef STM32L1XX_MD、#ifdef USE_STM3210E_EVAL这样的宏开关语句,甚至随工程附带了两个版本的库文件,这也照成了程序理解和调试的困难。 工程随带了两个库文件:STM32F10x_StdPeriph_Driver和STM32F1xx_StdPeriph_Driver。我们当然只能选一个了,比如手我们选择 STM32F1xx_StdPeriph_Driver,只要点击该组,右键- option for Group....,钩上iinclude in Target 和always build,就可以,另一个库文件组,钩掉这两个选项就可
[单片机]
stm32 使用malloc申请内存和free释放内存造成的内存碎片测试
本例中使用stm32c8t6 mdk3.5 和 gcc-arm-none-eabi-4_9。使用EmBitz IDE ARM GCC Compiler。 单片机是不建议使用 内存管理函数,但是在物联网应用当中,内存资源很是宝贵,MQTT 协议需要SSL TLS,数据签名 MD5,RSA等等 使用很是耗费内存资源, 使用内存管理函数就显得很有必要了。 经过测试不断的malloc和free 堆还是比较稳定的,测试 的基本思想是 随机小内存申请- 如果大内存申请就释放- 随机大内存申请- 释放申请的小内存 这样一直循环,循环超过了一万次,堆内存稳定在0x200045d0这个地方 100个 范围在1byte-100bye的随机 内
[单片机]
ARM S3C2440 时钟初始化流程
1.设置lock time 2.设置分频系数 3.设置CPU到异步工作模式 4.设置 FCLK 了解 芯片的时钟原理图,以及寄存器的作用 了解芯片的晶振频率,锁相环,分频系数,以及有哪些时钟
[单片机]
如何使用STM32_V3.5版本固件库建立工程模板
准备工作如下: 1:下载STM32_V3.5的固件库 去论坛上找,很多 2:准备Keil uVision4 软件,并安装到电脑上。 3:不要带板凳了,带上你的脑袋就行,因为板凳不会思考。 开始: 1:首先解压缩下载的固件库(保留一个备份,你懂的) 里面有, _htmresc : ST的 logo完全无用,不用理会, Libraries: 比较重要的文件 包含STM32的系统文件和大量头文件,也就是库文件了。 Project: 包含大量外设的例程,和各个软件版本的评估版工程模板。 KEIL对应的就是 MDK-ARM 文件下的工程模板。你也可以利用这
[单片机]
如何使用STM32_V3.5版本固件库建立工程模板
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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