STM32F429串口1配置

2023-11-15

static  void  ConfigUART(u32 bound)
{
	GPIO_InitTypeDef  GPIO_InitStructure;   //GPIO_InitStructure用于存放GPIO的参数
	USART_InitTypeDef USART_InitStructure;  //USART_InitStructure用于存放USART的参数
	NVIC_InitTypeDef  NVIC_InitStructure;   //NVIC_InitStructure用于存放NVIC的参数

	//使能RCC相关时钟                                                            
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);  //使能USART1的时钟    
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);   //使能GPIOA的时钟

	//配置TX的GPIO 
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;             //设置TX的引脚
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;           //设置TX的模式
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       //设置TX的I/O口输出速度
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;          //设置TX的输出类型为推挽输出
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;           //设置TX为上拉模式
	GPIO_Init(GPIOA, &GPIO_InitStructure);                  //根据参数初始化TX的GPIO

	//配置RX的GPIO
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;            //设置RX的引脚
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;           //设置RX的模式
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;          //设置RX输出类型为推挽输出
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;           //设置RX为上拉模式
	GPIO_Init(GPIOA, &GPIO_InitStructure);                  //根据参数初始化RX的GPIO


	GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);  //将引脚PA10连接到USART1_RX  
	GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);   //将引脚PA9连接到USART1_TX

	//配置USART的参数
	USART_StructInit(&USART_InitStructure);                     //初始化USART_InitStructure
	USART_InitStructure.USART_BaudRate = bound;               //设置波特率   
	USART_InitStructure.USART_WordLength = USART_WordLength_8b; //设置数据字长度   
	USART_InitStructure.USART_StopBits = USART_StopBits_1;    //设置停止位   
	USART_InitStructure.USART_Parity = USART_Parity_No;     //设置奇偶校验位   
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;           //设置模式   
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //设置硬件流控制模式
	USART_Init(USART1, &USART_InitStructure);                   //根据参数初始化USART1

	//配置NVIC
	NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //中断通道号
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;          //设置抢占优先级
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;           //设置子优先级
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;      //使能中断                   
	NVIC_Init(&NVIC_InitStructure);                                     //根据参数初始化NVIC 

	//使能USART1及其中断
	USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  //使能接收缓冲区非空中断
	USART_ITConfig(USART1, USART_IT_TXE, ENABLE);  //使能发送缓冲区空中断
	USART_Cmd(USART1, ENABLE);                      //使能USART1

}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32F429串口1配置 的相关文章

  • 如何更改闪存的起始地址?

    我正在使用 STM32F746ZG 和 FreeRTOS Flash的起始地址是0x08000000 但我想把它改成0x08040000 我通过谷歌搜索了这个问题 但没有找到解决方案 我更改了链接器脚本 如下所示 MEMORY RAM xr
  • 初始化 ST-Link 设备时出错 - 无法连接到设备

    我目前正在使用 ST Link 调试器对我的 STM32F3 Discovery 板进行编程 我使用的IDE是Atollic TrueStudio 5 5 2 现在我面临一个非常奇怪的问题 那就是我不断收到消息 初始化 ST Link 设备
  • 如何让printf在STM32F103上工作?

    我是 STM32F103 世界的新手 我有一个STM32F103的演示代码 我正在使用arm none eabi来编译它 我尝试了在谷歌上可以找到的内容 但到目前为止没有任何效果 我已经花了三天时间来解决这个问题 任何人都可以给我一个运行良
  • 优化 ARM Cortex M3 代码

    我有一个 C 函数 它尝试将帧缓冲区复制到 FSMC RAM 这些函数将游戏循环的帧速率降低至 10FPS 我想知道如何分析反汇编的函数 我应该计算每个指令周期吗 我想知道CPU把时间花在哪里 在哪个部分 我确信该算法也是一个问题 因为它的
  • 138-基于stm32单片机汽车多功能仪表盘显示系统Proteus仿真+源程序

    资料编号 138 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 ds1302时钟 LED灯 蜂鸣器 电位器 制作一个基于stm32单片机汽车多功能仪表盘显示系统Proteus仿真 2 通过DHT1
  • HAL库STM32常用外设教程(二)—— GPIO输入\输出

    HAL库STM32常用外设教程 二 GPIO输入 输出 文章目录 HAL库STM32常用外设教程 二 GPIO输入 输出 前言 一 GPIO功能概述 二 GPIO的HAl库驱动 三 GPIO使用示例 1 示例功能 四 代码讲解 五 总结
  • STM32F4 通过软复位跳转到引导加载程序,无需 BOOT0 和 BOOT1 引脚

    我问这个问题是因为可以在这里找到类似问题的答案 通过应用程序跳转到 STM32 中的引导加载程序 即从用户闪存在引导模式下使用引导 0 和引导 1 引脚 用户 JF002 JF002回答 当我想跳转到引导加载程序时 我在其中一个备份寄存器中
  • STM32超声波——HC_SR04

    文章目录 一 超声波图片 二 时序图 三 超声波流程 四 单位换算 五 取余计算 六 换算距离 七 超声波代码 一 超声波图片 测量距离 2cm 400cm 二 时序图 1 以下时序图要先提供一个至少10us的脉冲触发信号 告诉单片机我准备
  • HAL库学习

    CMSIS简介 CMSIS Cortex Microcontroller Software Interface Standard 微控制器软件接口标准 由ARM和其合作的芯片厂商 ST NXP 软件工具厂商 KEIL IAR 共同制定的标准
  • 解决KEIL编译慢问题

    两种方案 使用v6版本的ARM Compiler 如果v6版本编译不过 必须使用v5版本的 则可以勾选掉Browse Information选项 提升很明显 1分多钟能优化到几秒 看代码量 但是这个有个弊端 在KEIL中会影响函数跳转 建议
  • 跟着野火学FreeRTOS:第一段(任务定义,切换以及临界段)

    在裸机系统中 系统的主体就是 C P U CPU CP U 按照预先设定的程序逻辑在 m a i n
  • 1.69寸SPI接口240*280TFT液晶显示模块使用中碰到的问题

    1 69寸SPI接口240 280TFT液晶显示模块使用中碰到的问题说明并记录一下 在网上买了1 69寸液晶显示模块 使用spi接口 分辨率240 280 给的参考程序是GPIO模拟的SPI接口 打算先移植到FreeRtos测试 再慢慢使用
  • 无法使用 OpenOCD 找到脚本文件

    我正在尝试按照本教程将 OpenOCD 与我的 ST 发现板一起使用 https japaric github io discovery README html https japaric github io discovery READM
  • 嵌入式开发--STM32G4系列片上FLASH的读写

    这个玩意吧 说起来很简单 就是几行代码的事 但楞是折腾了我大半天时间才搞定 原因后面说 先看代码吧 读操作 读操作很简单 以32位方式读取的时候是这样的 data IO uint32 t 0x0800F000 需要注意的是 当以32位方式读
  • STM32H5 Nucleo-144 board开箱

    文章目录 开发板资料下载 目标 点亮LD1 绿 LD2 黄 和LD3 红 三个LED灯 开箱过程 博主使用的是STM32CubeMX配置生成代码 具体操作如下 打开STM32CubeMX File gt New project 选择开发板型
  • 通过JTAG恢复STM32 MCU磨掉的标记

    我有一块可能带有 STM32 MCU 的板 我想为该板制作定制固件 因为库存板有很多问题 不幸的是 电路板制造商很友善地磨掉了所有标记 有没有办法通过 jtag 获取设备 系列 ID 并将其交叉引用到型号 我能找到的一切都是关于获取芯片的唯
  • 嵌入式 C++11 代码 — 我需要 volatile 吗?

    采用 Cortex M3 MCU STM32F1 的嵌入式设备 它具有嵌入式闪存 64K MCU固件可以在运行时重新编程闪存扇区 这是由闪存控制器 FMC 寄存器完成的 所以它不像a b那么简单 FMC 获取缓冲区指针并将数据刻录到某个闪存
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能
  • GCC 变量映射和 MISRA-C

    我主要知道两种使用 GCC 声明内存映射寄存器的方法 有许多变体 使用双字段 每个外设的数据结构等 要么使用初始化为正确地址的指针 例如volatile uint32 t pMyRegister uint32 t 0xDEADBEEFUL

随机推荐

  • liberity 添加信赖的https证书到key.jks

    业务场景 定时任务批量推送数据到第三方接口 请求地址为https 域名 测试环境测试之后 出现证书认证问题 不能正常推送数据 定时任务部署在 websphere liberty中 出现问题之后在java的Java jdk 1 8 jre l
  • webpack 压缩图片

    问题描述 vue正常打包之后一些图片文件很大 使打包体积很大 通过image webpack loader插件可将大的图片进行压缩从而缩小打包体积 参考 点这里 解决方法 一定要用cnpm安装 cnpm i image webpack lo
  • 数据结构Java实现05----栈:顺序栈和链式堆栈

    本文转载至 http www cnblogs com smyhvae p 4789699 html 一 堆栈的基本概念 堆栈 也简称作栈 是一种特殊的线性表 堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同 其差别是线性表允许在任意位
  • 数据库的优化方案

    1 优化索引 SQL语句 分析慢查询 2 设计表的时候严格根据数据库的设计凡事来设计数据库 3 使用缓存 把经常访问到的数据且不经常变化的数据放在缓存中 节约磁盘IO 4 优化硬盘 采用SSD 使用磁盘队列技术 5 采用MySQL内部自带的
  • 软件体系结构-KWIC索引系统

    引言 KWIC作为一个早年间在ACM的Paper提出的一个问题 被全世界各个大学的软件设计课程奉为课堂讲义或者作业的经典 From Wiki FYI D L Parnas uses a KWIC Index as an example on
  • Scala递归删除某个文件夹

    check the result is already exists or not val outFilePath D doc spark out t2 val outFile new File outFilePath recursion
  • arm 使用wpa_cli连接wifi

    公司使用的是IMX6的ARM板 板子已经带了8192cu的驱动 使用 lsmod 命令可以查看已经安装的mod 使用的USB为 树莓派 Raspberry Pi 无线USB网卡 EDUP EP N8508GS 黄金版 免驱 lsmod 结果
  • Lorenz系统、简单的Rossler系统和Chua电路系统的混沌吸引子——MATLAB实现

    1 Lorenz系统 美国著名气象学家E N Lorenz在1963年提出来的用来刻画热对流不稳定性的模型 即Lorenz混沌模型 可以简单描述如下 x
  • OpenFire源码学习之十六:wildfire

    Wildfire Wildfire是一个基于xmpp的IM即时通讯和群组聊天工具 安装 Windows Windows的默认安装目录 c ProgramFiles Wildfire Linux Unix 有两种选择方法 1 选择RPM 它将
  • C++ 类模板之类外实现重载运算符和友元函数

    在同一个CPP中 使用友元函数 同时在类外实现 这里 h cpp未分离 如果分离写法不一样 一般在使用类模板时 将声明和实现放在同一文件中 可命名为 hpp后缀 即 h cpp在同一文件中 1 重载操作符 定义一个类 通过重载 lt lt
  • Windows下vs2013编译ffmpeg源码

    在搜罗网上各种资源以及网上请教各位大声终于在今天晚上编译成功 经测试编译出来的库可正常使用 故可证明编译正确 在此特感谢群里大神的帮助 感谢雷神 现将具体步骤记录如下 本人编译用的是vs2013 在win7系统下 对ffmpeg 3 0进行
  • 在ubuntu 下运行html 文件

    直接用vim 写好html 之后 直接用firefox test html 即可 而不是通常ide 中的点击图标 html 的基本模板 1 2
  • wangEditor4 + vue3.0 创建一个基础的 富文本编辑器

    文章时间 2021 8 13 如果超过太久了 可能文章就会失效了 所以请注意 项目场景 使用 wangEditor 来弄一个 富文本编辑器 实现文章的 添加 和 编辑 问题描述 在网上搜了 使用那个富文本编辑器好 于是就找到了这个 wang
  • Python 的 .py 与 Cython 的 .pxd .pyx .pyd 文件格式之间的主要区别

    http forum digitser cn thread 2227 1 1 html
  • Selenium的介绍与使用

    selenium 是一个用于对web网页进行自动化测试的工具 可以通过它提供的一些方法自动操作浏览器 可以完全模拟人的操作 selenium在Python爬虫中的应用 1 gt 获取动态网页中的数据 一些动态的数据我们在获取的源码中并没有显
  • shell 脚本 修改系统时间

    bin bash if n 1 then echo usage date sh HHMMSS for example date 01 01 01 else echo 1 date s 1 hwclock w hwclock r fi
  • SSH正向连接和反向连接

    ssh命令是openssh套件中的客户端连接工具 可以给予ssh加密协议实现安全的远程登录服务器 反向连接是什么 平时大多数使用ssh命令是控制端主机主动连接受控端主机 通过这个连接控制端主机可以主动的向受控端主机发送一些请求 这称为正向连
  • 如何使用 Pylint 来规范 Python 代码风格

    本文转载至 http www ibm com developerworks cn linux l cn pylint Pylint 是什么 Pylint 是一个 Python 代码分析工具 它分析 Python 代码中的错误 查找不符合代码
  • python pymysql emoji表情插入mysql数据库异常记录报错 pymysql.err.InternalError

    在数据库存储微信小程序用户昵称时候 发现用户昵称使用emoji表情时候就存不了数据库中间报错 pymysql err InternalError 1366 Incorrect string value xF0 x9F x98 x81 xF0
  • STM32F429串口1配置

    static void ConfigUART u32 bound GPIO InitTypeDef GPIO InitStructure GPIO InitStructure用于存放GPIO的参数 USART InitTypeDef USA