【STM32-学习笔记-6-】DMA
文章目录
- DMA
- Ⅰ、DMA框图
- Ⅱ、DMA基本结构
- Ⅲ、不同外设的DMA请求
- Ⅳ、DMA函数
- Ⅴ、DMA_InitTypeDef结构体参数
- ①、DMA_PeripheralBaseAddr
- ②、DMA_PeripheralDataSize
- ③、DMA_PeripheralInc
- ④、DMA_MemoryBaseAddr
- ⑤、DMA_MemoryDataSize
- ⑥、DMA_MemoryInc
- ⑦、DMA_DIR
- ⑧、DMA_BufferSize
- ⑨、DMA_Mode
- ⑩、DMA_M2M
- ①①、DMA_Priority
- Ⅵ、DMA配置示例
- DMA+AD多通道
- 1. ADC单次扫描+DMA数据转运
- 2. ADC连续扫描+DMA循环转运
DMA
Ⅰ、DMA框图
Ⅱ、DMA基本结构
Ⅲ、不同外设的DMA请求
Ⅳ、DMA函数
// 重置指定的DMA通道寄存器为默认值
void DMA_DeInit(DMA_Channel_TypeDef* DMAy_Channelx);// 初始化指定的DMA通道,根据初始化结构体配置参数
void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct);// 初始化DMA初始化结构体的默认值
void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct);// 开启或关闭指定的DMA通道
void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState);// 开启或关闭DMA通道的中断
void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState);// 设置DMA当前数据计数器的值
void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber); // 获取DMA当前数据计数器的值
uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx);// 获取DMA标志状态
FlagStatus DMA_GetFlagStatus(uint32_t DMAy_FLAG);
// 清除DMA标志
void DMA_ClearFlag(uint32_t DMAy_FLAG);// 获取DMA中断状态
ITStatus DMA_GetITStatus(uint32_t DMAy_IT);
// 清除DMA中断待处理位
void DMA_ClearITPendingBit(uint32_t DMAy_IT);
Ⅴ、DMA_InitTypeDef结构体参数
①、DMA_PeripheralBaseAddr
指定DMA通道的外设基地址(外设寄存器-起始地址)
- 类型:
uint32_t
- 取值范围:任意有效的外设地址
- 作用:这是DMA操作的外设端的起始地址,例如ADC、USART等外设的数据寄存器地址
②、DMA_PeripheralDataSize
指定外设寄存器的数据宽度 (配置DMA传输时外设数据的大小)
该参数可以是
@ref DMA_peripheral_data_size
:
宏定义解释
DMA_PeripheralDataSize_Byte
- 描述:表示外设数据大小为1字节(8位)
- 每次DMA传输的数据大小为1字节
DMA_PeripheralDataSize_HalfWord
- 描述:表示外设数据大小为半字(16位)
- 每次DMA传输的数据大小为2字节
DMA_PeripheralDataSize_Word
- 描述:表示外设数据大小为1字(32位)
- 每次DMA传输的数据大小为4字节
宏函数
IS_DMA_PERIPHERAL_DATA_SIZE(SIZE)
- 描述:检查给定的外设数据大小设置是否有效
- 参数:
SIZE
,代表DMA的外设数据大小- 功能:检查
SIZE
是否等于DMA_PeripheralDataSize_Byte
、DMA_PeripheralDataSize_HalfWord
或DMA_PeripheralDataSize_Word
中的任一个。- 返回值:如果
SIZE
有效,返回1
(真),否则返回0
(假)
③、DMA_PeripheralInc
指定外设地址寄存器是否递增
- 类型:
uint32_t
- 取值范围:
DMA_PeripheralInc_Disable
:外设地址不递增DMA_PeripheralInc_Enable
:外设地址递增- 作用:控制外设地址在每次数据传输后是否递增
④、DMA_MemoryBaseAddr
指定DMA通道的内存基地址 (存储器-起始地址)
- 类型:
uint32_t
- 取值范围:任意有效的内存地址
- 作用:这是DMA操作的内存端的起始地址,例如一个缓冲区的起始地址
⑤、DMA_MemoryDataSize
指定内存数据宽度(存储器-数据宽度)
- 类型:
uint32_t
- 取值范围:
DMA_MemoryDataSize_Byte
:数据宽度为8位DMA_MemoryDataSize_HalfWord
:数据宽度为16位DMA_MemoryDataSize_Word
:数据宽度为32位- 作用:确定内存数据的大小
⑥、DMA_MemoryInc
指定内存地址寄存器是否递增(指定存储器-是否递增)
- 类型:
uint32_t
- 取值范围:
DMA_MemoryInc_Disable
:内存地址不递增DMA_MemoryInc_Enable
:内存地址递增- 作用:控制内存地址在每次数据传输后是否递增
⑦、DMA_DIR
指定数据传输方向,即外设是数据源还是数据目标(指定外设站点是源还是目标)
- 类型:
uint32_t
- 取值范围:
DMA_DIR_PeripheralSRC
:外设是数据源,内存是数据目标DMA_DIR_PeripheralDST
:外设是数据目标,内存是数据源- 作用:确定数据传输的方向
⑧、DMA_BufferSize
指定DMA通道的缓冲区大小,以数据单元为单位
DMA_InitStruct.DMA_BufferSize = Size;
传递Size个大小为<数据宽度>的数据
- 类型:
uint32_t
- 取值范围:0到65535
- 作用:确定要传输的数据量。数据单元的大小取决于
DMA_PeripheralDataSize
或DMA_MemoryDataSize
的配置,具体取决于传输方向
⑨、DMA_Mode
指定DMAy通道的工作模式(是否要自动重装)
- 类型:
uint32_t
- 取值范围:
DMA_Mode_Normal
:正常模式,传输完成后停止DMA_Mode_Circular
:循环模式(自动重装),传输完成后从头开始- 作用:确定DMA传输的模式。循环模式不适用于内存到内存的传输
⑩、DMA_M2M
是否使用软件触发(存储器到存储器)
- 类型:
uint32_t
- 描述:指定DMA通道是否用于内存到内存的传输
- 取值范围:
DMA_M2M_Disable
:不使用内存到内存传输DMA_M2M_Enable
:使用内存到内存传输- 作用:确定DMA通道是否用于内存到内存的传输
①①、DMA_Priority
指定DMA通道的软件优先级
按需求配置
- 类型:
uint32_t
- 取值范围:
DMA_Priority_Low
:低优先级DMA_Priority_Medium
:中优先级DMA_Priority_High
:高优先级DMA_Priority_VeryHigh
:非常高优先级- 作用:确定DMA通道的优先级,影响多个DMA请求的处理顺序
Ⅵ、DMA配置示例
#include "stm32f10x.h" // Device headeruint32_t Temp_Size;//存储数据计数器的值void MyDMA_Init(uint32_t Source, uint32_t Dest, uint32_t Size)//参数需为两个数组的数组名
{Temp_Size = Size;RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);DMA_InitTypeDef DMA_InitStruct;DMA_InitStruct.DMA_PeripheralBaseAddr = Source;//外设寄存器-起始地址DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;//外设寄存器-数据宽度(此处为1byte)DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Enable;//指定外设地址寄存器-是否递增DMA_InitStruct.DMA_MemoryBaseAddr = Dest;//存储器-起始地址DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;//存储器-数据宽度DMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Enable;//指定存储器-是否递增DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralSRC;//指定外设站点是源还是目标DMA_InitStruct.DMA_BufferSize = Size;//传递Size个大小为<数据宽度>的数据DMA_InitStruct.DMA_Mode = DMA_Mode_Normal;//指定DMAy通道的工作模式(是否要自动重装)DMA_InitStruct.DMA_M2M = DMA_M2M_Enable;//是否使用软件触发(存储器到存储器)DMA_InitStruct.DMA_Priority = DMA_Priority_Medium;//指定DMAy通道的软件优先级DMA_Init(DMA1_Channel1, &DMA_InitStruct);DMA_Cmd(DMA1_Channel1, DISABLE);//使能或失能DMA
}void MyDMA_Transfer(void)//调用函数则开始转运
{DMA_Cmd(DMA1_Channel1, DISABLE);//失能DMADMA_SetCurrDataCounter(DMA1_Channel1, Temp_Size);//设置DMA当前数据计数器的值DMA_Cmd(DMA1_Channel1, ENABLE);//使能DMAwhile(DMA_GetFlagStatus(DMA1_FLAG_TC1) == RESET)//获取DMA标志状态(等待转运完成)DMA_ClearFlag(DMA1_FLAG_TC1);//清除DMA标志位
}
DMA+AD多通道
1. ADC单次扫描+DMA数据转运
#include "stm32f10x.h" // Device header
//模拟量转换为数字量
//AD多通道(ADC扫描模式+DMA数据转运)uint16_t Dest_Data[4];void AD_Init(void)
{ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//开启GPIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);//开启ADC时钟RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);//开启DMA时钟RCC_ADCCLKConfig(RCC_PCLK2_Div6);//配置ADC时钟(72MHz/6=12MHz)//配置GPIOGPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;//模拟输入GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStruct);ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_41Cycles5);//配置ADC常规通道ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_41Cycles5);//配置ADC常规通道ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 3, ADC_SampleTime_41Cycles5);//配置ADC常规通道ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 4, ADC_SampleTime_41Cycles5);//配置ADC常规通道//配置ADCADC_InitTypeDef ADC_InitStruct;ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;//将ADC配置为独立或操作双模式ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;//数据右对齐ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//不使用外部触发ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;//单次转换or连续转换ADC_InitStruct.ADC_ScanConvMode = ENABLE;//非扫描模式or扫描模式ADC_InitStruct.ADC_NbrOfChannel = 4;//指定要转换的ADC通道的数量ADC_Init(ADC1, &ADC_InitStruct);//配置DMA DMA_InitTypeDef DMA_InitStruct;DMA_InitStruct.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->DR;//外设寄存器-起始地址DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//外设寄存器-数据宽度(此处为1byte)DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//指定外设地址寄存器-是否递增DMA_InitStruct.DMA_MemoryBaseAddr = (uint32_t)Dest_Data;//存储器-起始地址DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;//存储器-数据宽度DMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Enable;//指定存储器-是否递增DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralSRC;//指定外设站点是源还是目标DMA_InitStruct.DMA_BufferSize = 4;//传递Size个大小为<数据宽度>的数据DMA_InitStruct.DMA_Mode = DMA_Mode_Normal;//指定DMAy通道的工作模式(是否要自动重装)DMA_InitStruct.DMA_M2M = DMA_M2M_Disable;//是否使用软件触发(存储器到存储器)DMA_InitStruct.DMA_Priority = DMA_Priority_Medium;//指定DMAy通道的软件优先级DMA_Init(DMA1_Channel1, &DMA_InitStruct);ADC_DMACmd(ADC1, ENABLE);//开启ADC的DMA功能DMA_Cmd(DMA1_Channel1, ENABLE);//使能或失能DMAADC_Cmd(ADC1, ENABLE);//开启ADC//ADC复位+校准ADC_ResetCalibration(ADC1);//重置ADC校准,准备进行校准操作while(ADC_GetResetCalibrationStatus(ADC1) == SET);//获取ADC重置校准状态,检查是否完成ADC_StartCalibration(ADC1);//开始ADC校准while(ADC_GetCalibrationStatus(ADC1) == SET);//获取ADC校准状态,检查是否完成
}void AD_GetValue(void)//获取模拟值
{//选择不同的通道或取ADC值DMA_Cmd(DMA1_Channel1, DISABLE);//失能DMADMA_SetCurrDataCounter(DMA1_Channel1, 4);//设置DMA当前数据计数器的值DMA_Cmd(DMA1_Channel1, ENABLE);//使能DMAADC_SoftwareStartConvCmd(ADC1, ENABLE);//开启软件启动ADC转换,用于软件触发转换--启动while(DMA_GetFlagStatus(DMA1_FLAG_TC1) == RESET)//获取DMA标志状态(等待转运完成)DMA_ClearFlag(DMA1_FLAG_TC1);//清除DMA标志位}
2. ADC连续扫描+DMA循环转运
#include "stm32f10x.h" // Device header
//模拟量转换为数字量
//AD多通道(ADC连续扫描+DMA循环转运)uint16_t Dest_Data[4];void AD_Init(void)
{ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//开启GPIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);//开启ADC时钟RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);//开启DMA时钟RCC_ADCCLKConfig(RCC_PCLK2_Div6);//配置ADC时钟(72MHz/6=12MHz)//配置GPIOGPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;//模拟输入GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStruct);ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_41Cycles5);//配置ADC常规通道ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_41Cycles5);//配置ADC常规通道ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 3, ADC_SampleTime_41Cycles5);//配置ADC常规通道ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 4, ADC_SampleTime_41Cycles5);//配置ADC常规通道//配置ADCADC_InitTypeDef ADC_InitStruct;ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;//将ADC配置为独立或操作双模式ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;//数据右对齐ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//不使用外部触发ADC_InitStruct.ADC_ContinuousConvMode = ENABLE;//单次转换or连续转换**********************************************ADC_InitStruct.ADC_ScanConvMode = ENABLE;//非扫描模式or扫描模式ADC_InitStruct.ADC_NbrOfChannel = 4;//指定要转换的ADC通道的数量ADC_Init(ADC1, &ADC_InitStruct);//配置DMA DMA_InitTypeDef DMA_InitStruct;DMA_InitStruct.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->DR;//外设寄存器-起始地址DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//外设寄存器-数据宽度(此处为1byte)DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//指定外设地址寄存器-是否递增DMA_InitStruct.DMA_MemoryBaseAddr = (uint32_t)Dest_Data;//存储器-起始地址DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;//存储器-数据宽度DMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Enable;//指定存储器-是否递增DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralSRC;//指定外设站点是源还是目标DMA_InitStruct.DMA_BufferSize = 4;//传递Size个大小为<数据宽度>的数据DMA_InitStruct.DMA_Mode = DMA_Mode_Circular;//指定DMAy通道的工作模式(是否要自动重装)******************************DMA_InitStruct.DMA_M2M = DMA_M2M_Disable;//是否使用软件触发(存储器到存储器)DMA_InitStruct.DMA_Priority = DMA_Priority_Medium;//指定DMAy通道的软件优先级DMA_Init(DMA1_Channel1, &DMA_InitStruct);ADC_DMACmd(ADC1, ENABLE);//开启ADC的DMA功能DMA_Cmd(DMA1_Channel1, ENABLE);//使能或失能DMAADC_Cmd(ADC1, ENABLE);//开启ADC//ADC复位+校准ADC_ResetCalibration(ADC1);//重置ADC校准,准备进行校准操作while(ADC_GetResetCalibrationStatus(ADC1) == SET);//获取ADC重置校准状态,检查是否完成ADC_StartCalibration(ADC1);//开始ADC校准while(ADC_GetCalibrationStatus(ADC1) == SET);//获取ADC校准状态,检查是否完成ADC_SoftwareStartConvCmd(ADC1, ENABLE);//开启软件启动ADC转换,用于软件触发转换--启动********************************
}
//*****************************************************************************************
相关文章:
![](https://i-blog.csdnimg.cn/img_convert/999914bb6f27183fcb8d724a184125c4.png)
【STM32-学习笔记-6-】DMA
文章目录 DMAⅠ、DMA框图Ⅱ、DMA基本结构Ⅲ、不同外设的DMA请求Ⅳ、DMA函数Ⅴ、DMA_InitTypeDef结构体参数①、DMA_PeripheralBaseAddr②、DMA_PeripheralDataSize③、DMA_PeripheralInc④、DMA_MemoryBaseAddr⑤、DMA_MemoryDataSize⑥、DMA_MemoryInc⑦、DMA_DIR⑧、DMA_Buff…...
![](https://www.ngui.cc/images/no-images.jpg)
js实现一个可以自动重链的websocket客户端
class WebSocketClient {constructor(url, callback, options {}) {this.url url; // WebSocket 服务器地址this.options options; // 配置选项(例如重试间隔、最大重试次数等)this.retryInterval options.retryInterval || 1000; // 重试间隔&#…...
![](https://i-blog.csdnimg.cn/direct/1f83243264654573ad5ea433298f0fb7.png)
企业总部和分支通过GRE VPN互通
PC1可以ping通PC2 1、首先按照地址表配置ip地址 2、分别在AR1和AR3上配置nat 3、配置GRE a 创建tunnel接口,并选择tunnel协议为GRE,为隧道创建一个地址,用作互联 b 为隧道配置源地址或者源接口,这里选择源接口;再为…...
![](https://i-blog.csdnimg.cn/direct/195b775d9e0a4e11a909e8f9063c738d.png)
油猴支持阿里云自动登陆插件
遇到的以下问题,都已在脚本中解决: 获取到的元素赋值在页面显示,但是底层的value并没有改写,导致请求就是获取不到数据元素的加载时机不定,尤其是弱网情况下,只靠延迟还是有可能获取不到,且登陆…...
![](https://i-blog.csdnimg.cn/direct/918242775f684d628b7dcf2ee74eb48c.png)
【2024年华为OD机试】(C卷,100分)- 字符串筛选排序 (Java JS PythonC/C++)
一、问题描述 题目描述 输入一个由N个大小写字母组成的字符串 按照ASCII码值从小到大进行排序 查找字符串中第K个最小ASCII码值的字母 (k > 1) 输出该字母所在字符串中的位置索引 (字符串的第一个位置索引为0) k如果大于字符串长度则输出最大ASCII码值的字母所在字符串…...
![](https://www.ngui.cc/images/no-images.jpg)
iOS - runtime总结
详细总结一下 Runtime 的核心内容: 1. 消息发送机制 // 消息发送的基本流程 id objc_msgSend(id self, SEL _cmd, ...) {// 1. 获取 isaClass cls object_getClass(self);// 2. 查找缓存IMP imp cache_getImp(cls, _cmd);if (imp) return imp(self, _cmd, ...);…...
![](https://i-blog.csdnimg.cn/img_convert/0ede82cc25798a0aebfb5d2927a2a678.png)
第33 章 - ES 实战篇 - MySQL 与 Elasticsearch 的一致性问题
思维导图 0. 前言 MySQL 与 Elasticsearch 一致性问题是老生常谈了。网上有太多关于这方面的文章了,但是千篇一律,看了跟没看没有太大区别。 在生产中,我们往往会通过 DTS 工具将 binlog 导入到 Kafka,再通过 Kafka 消费 binlog&…...
![](https://i-blog.csdnimg.cn/direct/59cffa2b60cf45b2a5f38743f4635abf.png#pic_center)
Artec Leo 3D扫描仪与Ray助力野生水生动物法医鉴定【沪敖3D】
挑战:捕获大型水生哺乳动物(如鲸鱼)的数据,搭建全彩3D模型,用于水生野生动物的法医鉴定、研究和保护工作。 解决方案:Artec Eva、Artec Space Spider、Artec Leo、Artec Ray、Artec Studio、CT scans 效果&…...
![](https://www.ngui.cc/images/no-images.jpg)
PythonQT5打包exe线程使用
打包: pyinstaller --noconsole --onefile test.py–noconsole 表示不需要打开命令行 修改:test.spec 一般项目里面需要用的资源文件,比如lib、png、exe等。 需要单独修改spec文件 pathex[.],binaries[(D:/test.png, .),(D:/simsun.ttc, .…...
![](https://i-blog.csdnimg.cn/direct/7aea041960ea4082ae89409024044ca0.png)
【Powershell】Windows大法powershell好(二)
PowerShell基础(二) 声明:该笔记为up主 泷羽的课程笔记,本节链接指路。 警告:本教程仅作学习用途,若有用于非法行为的,概不负责。 1. powershell 执行外部命令 powershell也可以执行一些外部的…...
![](https://www.ngui.cc/images/no-images.jpg)
前端学习-环境this对象以及回调函数(二十七)
目录 前言 目标 环境对象 作用 环境对象this是什么? 判断this指向的粗略规则是什么? 回调函数 目标 常见的使用场景 综合案例:Tab任务栏切换 总结 前言 男儿何不带吴钩,收取关山五十州 目标 能够分析判断函数运行在不…...
![](https://i-blog.csdnimg.cn/direct/4b7cecf72f3d4573a83ea9135498d3fc.png)
Element-plus、Element-ui之Tree 树形控件回显Bug问题。
需求:提交时,需要把选中状态和半选中状态 的数据id提交。如图所示: 数据回显时,会出现代码如下: <template><el-tree ref"treeRef" :data"tree" show-checkbox node-key"id" …...
![](https://i-blog.csdnimg.cn/direct/5d41dfc4f6804a7a8e1d6140fcf4380f.png)
互联网全景消息(10)之Kafka深度剖析(中)
一、深入应用 1.1 SpringBoot集成Kafka 引入对应的依赖。 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupI…...
![](https://www.ngui.cc/images/no-images.jpg)
Oracle Dataguard(主库为双节点集群)配置详解(5):将主库复制到备库并启动同步
Oracle Dataguard(主库为双节点集群)配置详解(5):将主库复制到备库并启动同步 目录 Oracle Dataguard(主库为双节点集群)配置详解(5):将主库复制到备库并启动…...
![](https://www.ngui.cc/images/no-images.jpg)
pytorch小记(一):pytorch矩阵乘法:torch.matmul(x, y)
pytorch小记(一):pytorch矩阵乘法:torch.matmul(x, y)/ x y 代码代码 1:torch.matmul(x, y)输入张量:计算逻辑:输出结果: 代码 2:y y.view(4,1)…...
![](https://i-blog.csdnimg.cn/direct/2ad9f1c7c377479b9e238b31084eeff3.png)
PyTorch环境配置常见报错的解决办法
目标 小白在最基础的环境配置里一般都会出现许多问题。 这里把一些常见的问题分享出来。希望可以节省大家一些时间。 最终目标是可以在cmd虚拟环境里进入jupyter notebook,new的时候有对应的环境,并且可以跑通所有的import code。 第一步:…...
![](https://i-blog.csdnimg.cn/direct/ac5217088e9248c091580b57432bc18d.png)
罗永浩再创业,这次盯上了 AI?
罗永浩,1972年7月9日生于中国延边朝鲜族自治州的一个军人家庭,是一名朝鲜族人;早年在新东方授课,2004年当选 “网络十大红人” ;2006年8月1日,罗永浩创办牛博网;2008年5月,罗永浩注册…...
![](https://www.ngui.cc/images/no-images.jpg)
VUE3 provide 和 inject,跨越多层级组件传递数据
provide 和 inject 是 Vue 3 提供的 API,主要用于实现祖先组件与后代组件之间的依赖注入。它们可以让你在组件树中,跨越多层组件传递数据,而不需要通过 props 或事件的方式逐层传递。这个机制主要用于状态共享、插件系统或某些跨层级的功能。…...
![](https://i-blog.csdnimg.cn/direct/4d1b3cd9fd654020ac56ce780a7d4987.png)
git打补丁
1、应用场景 跨仓库升级 开发项目B使用的是开源项目A。开源项目A发现漏洞,作者进行了修复,我们可以通过使用git补丁的方式,将作者修改的内容复制到我 们的项目B中。 2、TortoiseGit方式 源仓库 格式化补丁 根据提交数量,生成…...
![](https://i-blog.csdnimg.cn/direct/42526c56c9924d3d8edf0eb3db3b1044.jpeg)
机械燃油车知识图谱、知识大纲、知识结构(持续更新...)
一、发动机 曲柄连杆机构 配气机构 点火系统 起动系统 燃油供给系统 润滑系统 冷却系统 二、底盘 (一)传动系统 1、离合器 2、变速器 3、万向传动装置 4、驱动桥 (二)行驶系统 1、车架 2、车桥 3、悬架 4、车轮 &a…...
![](https://www.ngui.cc/images/no-images.jpg)
Vue3学习总结
一、Vue 3 基础搭建与核心语法 1.创建 Vue 3 应用 在项目的入口文件 main.js 中,通过以下代码创建 Vue 3 应用实例: import { createApp } from vue; import App from ./App.vue;const app createApp(App); app.mount(#app); 这几行代码的作用是引入…...
![](https://i-blog.csdnimg.cn/img_convert/9bd84aa6c16544bd68ab12c81ea351ad.webp?x-oss-process=image/format,png)
Type-C双屏显示器方案
在数字化时代,高效的信息处理和视觉体验已成为我们日常生活和工作的关键需求。随着科技的进步,一款结合了便携性和高效视觉输出的设备——双屏便携屏,逐渐崭露头角,成为追求高效工作和娱乐体验人群的新宠。本文将深入探讨双屏便携…...
![](https://i-blog.csdnimg.cn/direct/bd5db2a2310943cf89637f985253a3c3.heic)
【读书与思考】焦虑与内耗
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 导言 今天一个朋友和我说,最近比较焦虑和内耗,无心工作和学习,我问他你焦虑内耗的时候,时间主要花在哪了,他告诉我说主要花在看有关移…...
![](https://www.ngui.cc/images/no-images.jpg)
基于python的网页表格数据下载--转excel
基于 Python 的网页表格数据爬取与下载:以维基百科为例 目录 基于 Python 的网页表格数据爬取与下载:以维基百科为例1. 背景介绍2. 工具与环境3. 操作步骤1. 获取网页内容2. 定位表格元素3. 表格变身 Pandas DataFrame4. 检查数据,收工!5. 进阶玩法与优化6. 完整代码4. 结果…...
![](https://www.ngui.cc/images/no-images.jpg)
Vue.js开发入门:从零开始搭建你的第一个项目
前言 嘿,小伙伴们!今天咱们来聊聊 Vue.js,一个超火的前端框架。如果你是编程小白,别怕,跟着我一步步来,保证你能轻松上手,搭建起属于自己的第一个 Vue 项目。Vue.js 可能听起来有点高大上&#…...
![](https://i-blog.csdnimg.cn/direct/49af320fcb47436c864c359c3a7bc7a5.png)
LS1046+XILINX XDMA PCIE调通
欢迎点赞收藏,欢迎私下讨论技术,分享技术 硬件平台 :NXP LS1046 XILINX FPGA 软件平台:LINUX 4.19.68 buildroot LS1046 PEX3 接 XILINX FPGA,linux使用designware的PCI主控制器。下载XILINX DMA驱动,解…...
![](https://i-blog.csdnimg.cn/direct/7941b86d92c547cfa3bdc17012bfcbd7.png)
HarmonyOS:@LocalBuilder装饰器: 维持组件父子关系
一、前言 当开发者使用Builder做引用数据传递时,会考虑组件的父子关系,使用了bind(this)之后,组件的父子关系和状态管理的父子关系并不一致。为了解决组件的父子关系和状态管理的父子关系保持一致的问题,引入LocalBuilder装饰器。…...
![](https://www.ngui.cc/images/no-images.jpg)
YOLOv10-1.1部分代码阅读笔记-downloads.py
downloads.py ultralytics\utils\downloads.py 目录 downloads.py 1.所需的库和模块 2.def is_url(url, checkFalse): 3.def delete_dsstore(path, files_to_delete(".DS_Store", "__MACOSX")): 4.def zip_directory(directory, compressTrue, ex…...
![](https://i-blog.csdnimg.cn/direct/38ea57cdd8e8406390eb6814d86d96a7.png)
计算机图形学【绘制立方体和正六边形】
工具介绍 OpenGL:一个跨语言的图形API,用于渲染2D和3D图形。它提供了绘制图形所需的底层功能。 GLUT:OpenGL的一个工具库,简化了窗口创建、输入处理和其他与图形环境相关的任务。 使用的函数 1. glClear(GL_COLOR_BUFFER_BIT |…...
![](https://i-blog.csdnimg.cn/direct/922b9077f3a04aeebc20ade87fe091ac.png)
基于django中医药数据可视化平台(源码+lw+部署文档+讲解),源码可白嫖!
摘要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,中医药管理平台当然不能排除在外。中医药数据可视化平台是在实际应用和软件工程的开发原理之上,运用Python语言、ECharts技术、…...
![](https://img-blog.csdnimg.cn/img_convert/42aac778f7ba4b228972164563c99564.png)
wordpress评论验证/seo的中文意思
最近朋友需要两点路线和多个点路线绘制这个功能,帮忙弄了一下,写这篇博客与大家分享一下。两点路线是起点和终点两个经纬度点,高德绘制出路线,可以实现实线和虚线功能效果图:相关属性:mPolylineOptions ne…...
![](http://jason-images.qiniudn.com/@/ML/foundation/regularization/l2_regularizer.jpg)
wordpress哪个主题适合做网址导航/惠州抖音seo
引言 上一小节中,我们介绍了过拟合的概念,在机器学习中最大的危险就是过拟合,为了解决过拟合问题,通常有两种办法,第一是减少样本的特征(即维度),第二就是我们这里要说的“正则化”&…...
![](/images/no-images.jpg)
西地那非片的正确服用方法/百度关键词seo
触发器、存储过程和函数三者有何区别? 回复:触发器、存储过程和函数三者有何区别? 触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行;你所说的函数是自定义函数吧,函数是根据输…...
![](/images/no-images.jpg)
专门做进口产品的网站/网站推广的常用方法有哪些
Command[:代码左移 Command]:代码右移 Esc:代码自动完成 Tab:选择提示的代码 Ctrl.:代码提示中向后翻页 CtrlShift+.:代码提示中向前翻页 Ctrlk:删除空行 Ctrldelete:删除一行代码 Com…...
![](https://img-blog.csdnimg.cn/20190522163226527.png)
如何建网站教程视频/公司网络优化方案
Java类的初始化顺序: 若有继承,先初始化父类中的静态和子类中的静态,再初始化父类和子类的构造方法 静态变量(带有static的变量)或者静态代码区—>类中new对象的代码//构造函数 静态最优先,成员变量次…...
![](/images/no-images.jpg)
山东平台网站建设公司/推广费用一般多少
第一种途径:ginput()函数ginput提供了一个十字光标使我们能更精确的选择我们所需要的位置,并返回坐标值。函数调用形式为:[x,y] ginput(n)[x,y] ginput[x,y,button] ginput(...)对于[x,y] ginput(n),能使你从当前的坐标系中读…...