stm32学习第四天

news2024/11/25 1:05:17

DMA1:各个通道一览

 DMA2:各个通道一览

 1.stm32DMA相关固件库函数说明

第一个参数选择哪一个DMA的哪一个通道

初始化函数

void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct);
typedef struct
{
  uint32_t DMA_PeripheralBaseAddr;   //外设地址

  uint32_t DMA_MemoryBaseAddr;       //存储器地址

  uint32_t DMA_DIR;                  //传输方向
//#define DMA_DIR_PeripheralDST  //外设作为目标             
//#define DMA_DIR_PeripheralSRC  //外设作为源               

  uint32_t DMA_BufferSize;           //输出大小
    
  uint32_t DMA_PeripheralInc;        //外设地址增量模式 
//#define DMA_PeripheralInc_Enable          
//#define DMA_PeripheralInc_Disable          

  uint32_t DMA_MemoryInc;            //存储器地址增量模式   
//#define DMA_MemoryInc_Enable               
//#define DMA_MemoryInc_Disable              
 

  uint32_t DMA_PeripheralDataSize;    //外设数据宽度   字节,半字
//#define DMA_PeripheralDataSize_Byte   字节     
//#define DMA_PeripheralDataSize_HalfWord    半字
//#define DMA_PeripheralDataSize_Word         字

  uint32_t DMA_MemoryDataSize;        //存储器数据宽度   
//#define DMA_MemoryDataSize_Byte          
//#define DMA_MemoryDataSize_HalfWord      
//#define DMA_MemoryDataSize_Word            

  uint32_t DMA_Mode;                   //模式选择    
//#define DMA_Mode_Circular            循环模式      
//#define DMA_Mode_Normal               正常模式      

  uint32_t DMA_Priority;               //通道优先级
//#define DMA_Priority_VeryHigh             
//#define DMA_Priority_High                  
//#define DMA_Priority_Medium              
//#define DMA_Priority_Low                   
      
  uint32_t DMA_M2M;                    //存储器到存储器模式
//#define DMA_M2M_Enable                   
//#define DMA_M2M_Disable                 
             
}DMA_InitTypeDef;

开启DMA通道

void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState)

ENABLE or DISABLE.

DMA中断配置

void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState);

第二个参数设置,中断请求,第三个参数设置,打开还是关闭,ENABLE or DISABLE.

 DMA_IT_TC:  Transfer complete interrupt mask
 DMA_IT_HT:  Half transfer interrupt mask
DMA_IT_TE:  Transfer error interrupt mask

 DMA清除中断挂起

void DMA_ClearITPendingBit(uint32_t DMAy_IT);

DMA获取中断状态

ITStatus DMA_GetITStatus(uint32_t DMAy_IT);

获取传输剩余个数

uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx);

DMA时钟在AHB总线上

void RCC_AHBPeriphResetCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);

 2.串口

 异步通信,全双工;

 

串口固件库函数:

1)初始化串口

参数1:USART1, USART2, USART3(同步,异步), UART4 or UART5(异步)

参数2:结构体

void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
typedef struct
{
  uint32_t USART_BaudRate;     //波特率         

  uint16_t USART_WordLength;   //有效数据位
//#define USART_WordLength_8b                
//#define USART_WordLength_9b                      

  uint16_t USART_StopBits;   //停止位,串口一般为1 
//#define USART_StopBits_1                     
//#define USART_StopBits_0_5                 
//#define USART_StopBits_2                     
//#define USART_StopBits_1_5                          

  uint16_t USART_Parity;    //校验
//#define USART_Parity_No    //没有校验                  
//#define USART_Parity_Even   //偶校验               
//#define USART_Parity_Odd    //奇校验           
         
  uint16_t USART_Mode;      //串口模式
//#define USART_Mode_Rx     //发送模式                    
//#define USART_Mode_Tx     //接收模式                     

  uint16_t USART_HardwareFlowControl;     //流控
//#define USART_HardwareFlowControl_None  // 无流控   
//#define USART_HardwareFlowControl_RTS        
//#define USART_HardwareFlowControl_CTS     
//#define USART_HardwareFlowControl_RTS_CTS    

} USART_InitTypeDef;

2)打开串口使能:

 USART1, USART2, USART3, UART4 or UART5.

第二个参数为:ENABLE or DISABLE.

void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState)

3)串口中断:

USART1, USART2, USART3, UART4 or UART5.

第二个参数为: 

@arg USART_IT_CTS:  CTS change interrupt (not available for UART4 and UART5)
  *     @arg USART_IT_LBD:  LIN Break detection interrupt
  *     @arg USART_IT_TXE:  Transmit Data Register empty interrupt   发送中断(发送完成)
  *     @arg USART_IT_TC:   Transmission complete interrupt
  *     @arg USART_IT_RXNE: Receive Data register not empty interrupt  接收中断(收到数据)
  *     @arg USART_IT_IDLE: Idle line detection interrupt          空闲中断
  *     @arg USART_IT_PE:   Parity Error interrupt
  *     @arg USART_IT_ERR:  Error interrupt(Frame error, noise error, overrun error)

第三个参数为:ENABLE or DISABLE.

void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);

 4)发送函数

 USART1, USART2, USART3, UART4 or UART5.

第二个参数为要发送的数据:

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);

 4)接收函数

uint16_t USART_ReceiveData(USART_TypeDef* USARTx);

接收的数据以返回值的形式接收

 5)DMA串口打开

第一个参数: USART1, USART2, USART3, UART4 or UART5.

第二个参数:

 @arg USART_DMAReq_Tx: USART DMA transmit request  发送请求
 @arg USART_DMAReq_Rx: USART DMA receive request   接收

第三个:

ENABLE or DISABLE.

void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/426092.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue项目中关于全局css的处理

Vue项目中关于全局css的处理步骤一:定义声明全局CSS的样式文件(common.scss)步骤二:挂载到全局封装一:对common.scss拆分封装二:新建index.scss,对elementPlus或者element-ui样式进行覆盖封装三:variable.s…

一、ts学习第一课:环境配置

一、下载node 官网:Node.jsNode.js is a JavaScript runtime built on Chromes V8 JavaScript engine.https://nodejs.org/en 推荐下载左侧稳点版的node,下载好了,就一步步点击安装就ok了。 判断是否已经下载好了node,在命令行…

BIO和NIO的区别与实现

目录 目标 概述 实战 单线程版本的BIO 多线程版本的BIO 单线程NIO(简易版) 单线程NIO(多路复用版) 客户端发送数据的方法 目标 了解BIO和NIO的区别和应用场景。分析BIO和NIO的线程模型,利用Socket实现BIO和NI…

pytorch 笔记

1.python文件、python控制台Terminal、jupyter代码执行比较 2.Dataset和Dataloader dataset存储数据集,dataloader从数据集中批量加载数据,如 把 dataset 放入 DataLoaderloader Data.DataLoader(datasettorch_dataset, # torch TensorDataset forma…

MIPI D-PHYv2.5笔记(17) -- Global Operation Flow Diagram、数据速率依赖参数

声明:作者是做嵌入式软件开发的,并非专业的硬件设计人员,笔记内容根据自己的经验和对协议的理解输出,肯定存在有些理解和翻译不到位的地方,有疑问请参考原始规范看 Global Operation Flow Diagram 图1 Data Lane Mod…

【Linux】线程概念详析

我们已经了解了Linux操作系统进程部分相关知识: 博主有关Linux进程相关介绍的文章: 💥[Linux] 系统进程相关概念、系统调用、Linux进程详析、进程查看、fork()初识 💥[Linux] 进程状态相关概念、Linux实际进程状态、进程优先级 …

【超算/先进计算学习】日报1

目录今日已完成任务列表遇到的问题及解决方案任务完成详细笔记Darknet框架优化介绍darknet介绍YOLO高性能计算与超级计算机简介算力超级计算机概念与体系结构并行编程技术Linux常用操作命令Linux操作系统与指令使用机器信息查询文件、目录和权限文件内容查看环境变量使用对自己…

15.枚举

枚举 枚举是Java1.5引入的新特性,通过关键字enum来定义枚举类。枚举类是一种特殊类,它和普通类一样可以使用构造方法、定义成员变量和方法,也能实现接口,但枚举类不能继承其他类。枚举是一个被命名的整型常数的集合,用于声明一组…

Linux系统下安装zookeeper教程

将下载好的zookeeper上传到linux服务器上,这里使用的是FileFilla 解压:[rootcentos7964 software]# tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz 进入刚刚解压后的文件夹,创建一个名字为data的文件夹,如下: [rootc…

分库分表--shardingjdbc

文章目录前言一、shardingjdbc简介作用二、如何使用1.我有个表现在体量太大了,我想做分库分表2.开始改造1 引入shardingjdbc2 更改yml文件3 测试看效果3.旧数据迁移4.其他分库类型5 部分配置说明总结前言 当项目开始的时候,没有想到后续的分库分表的话,其实对于后续的分库分表…

MYSQL学习 - DDL数据库操作

前言 从今天开始, 健哥就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。 ------------------------------前戏已做完,精彩即开始---…

【数据结构】树和二叉树——堆

目录 🍉一.树的概念及结构🍉 1.树的概念 2.树的相关术语 3.树的表示 4.树在实际中的应用 🍊二.二叉树的概念和结构🍊 1.二叉树的概念 2.特殊的二叉树 2.1.满二叉树 2..2.完全二叉树 3.二叉树的性质 4.二叉树的存储结构 …

限流算法(计数器、滑动时间窗口、漏斗、令牌)原理以及代码实现

文章目录前言1、计数器(固定时间窗口)算法原理代码实现存在的问题2、滑动时间窗口算法原理代码实现存在的问题3、漏桶算法原理代码实现存在的问题4、令牌桶算法原理代码实现最后本文会对这4个限流算法进行详细说明,并输出实现限流算法的代码示…

一文了解Java ArrayList (源码逐行解析)

介绍 ArrayList 是最常用的 List 实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中。当从 Arr…

c++积累5-lock_guard使用

1、std:mutex 在了解lock_guard之前,需要先学习下std:mutex,因为lock_guard内部就是使用的std:mutex std:mutex:是一个用于保护共享数据不会同时被多个线程访问的类,它叫做互斥量。我们可以把它看作一把锁,基本使用如下&#xff…

【致敬未来的攻城狮计划】— 连续打卡第四天:e2 studio 使用教程

系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 文章目录 系列文章目录 文…

Flutter成不了“顶流明星”的7大理由

Flutter是一款由Google推出的跨平台移动应用开发框架,近年来备受关注。尽管Flutter在某些方面表现出色,但仍然有一些人对它的发展前景表示怀疑。近期一些文章针对Flutter的发展提出了不少质疑和批评,称其难以成为移动应用开发的“顶流明星”&…

【计算机网络—— 安装packet tracer的教程,管理MAC地址和配置路由器的实验步骤以及心得体会】

文章目录安装packet tracer的教程管理MAC地址实验目的 :管理MAC地址实验内容及过程记录(一)运行Cisco Packet Tracer软件(二)选择PC终端(三)运行终端(四)按表内容对交换机…

Spring Cloud Nacos使用总结

目录 安装Nacos服务器 服务发现与消费 服务发现与消费-添加依赖 服务发现-配置文件 服务发现-注解 服务发现-Controller 服务消费-配置文件 服务消费-注解与Ribbon消费代码 服务消费-运行 配置管理 配置管理-添加依赖 配置管理-配置文件 配置管理-注解 配置管理-…

Raft一致性算法(精简和扩展)

raft一致性算法 文章目录raft一致性算法一、raft简介1.1 raft涉及到的名词1.2 Rpc请求1.3 复制状态机二、raft⼀致性算法2.0 摘要2.0.1 所有服务器需遵守的规则2.0.2 跟随者2.0.3 候选⼈2.0.4 领导人2.0.5 状态2.0.6 特性2.1 raft基础2.2 leader选举2.2.1 集群启动时选举2.2.2 …