[STM32F1] stm32f103c8t6使用DMA配置及理解

[复制链接]
1214|13
 楼主| 两只袜子 发表于 2023-9-27 10:15 | 显示全部楼层 |阅读模式
我的想法是使用DMA进行USART1的Rx外设和Tx进行数据的交互,但是我使用printf却没有输出。我想知道是代码问题还是我的想法是错误的,**大神纠正。

DMA.c
#include "DMA.h"

#define DTRD 5000 /*可传输最大数据65535字节*/

void USART1_Rx_DMA_Init(u8 buff)
{
    RCC->AHBENR |= 1;/*开启DMA1时钟*/
    DMA1_Channel5->CCR = 0x00000000;
   
    /*意思是从USART1->DR处获取数据,后放到buff上*/
    DMA1_Channel5->CPAR = (uint32_t)(&USART1->DR);/*源*/
    DMA1_Channel5->CMAR = (uint32_t)buff;/*目标*/
   
    DMA1_Channel5->CNDTR = DTRD;
   

    DMA1_Channel5->CCR |= 2<<12;
    DMA1_Channel5->CCR |= 1<<7;
    DMA1_Channel5->CCR |= 1<<5;
    DMA1_Channel5->CCR &= 1<<4;/*数据传输方向由USART1->DR到buff,因此是从外设读*/
    //DMA1_Channel5->CCR |= 1<<1;
    DMA1_Channel5->CCR |= 1;
   
}

void USART1_Tx_DMA_Init(u8 Send_Buff)
{
    RCC->AHBENR |= 1;
   
    DMA1_Channel4->CCR = 0x00000000;
   
    DMA1_Channel4->CPAR = (uint32_t)(&USART1->DR);/*目标*/
    DMA1_Channel4->CMAR = (uint32_t)Send_Buff;/*源*/
   
    DMA1_Channel4->CNDTR = DTRD;
   
    DMA1_Channel4->CCR |= 2<<12;
    DMA1_Channel4->CCR |= 1<<7;
    DMA1_Channel4->CCR |= 1<<5;
    DMA1_Channel4->CCR |= 1<<4;/*数据方向由Send_Buff到USART1->DR,因此是从存储器读*/
    DMA1_Channel5->CCR |= 1;
}
==========================================
DMA.h
#ifndef __DMA_H
#define __DMA_H

#include
#include "STM32f10x.h"
#include "USART.h"

void USART1_Rx_DMA_Init(u8 buff);
void USART1_Tx_DMA_Init(u8 Send_Buff);

#endif
===========================================
main.c
#include "stm32f10x.h"
#include
#include "LED_Init.h"
#include "USART.h"
#include "DMA.h"


u8 SendBuff = 'a';
u8 handBuff;
int main(void)
{
   
    Usart1_Init(72,4800);
    LED_Setup();
   
    USART1_Tx_DMA_Init(SendBuff);
    USART1_Rx_DMA_Init(handBuff);
    printf("%cn",handBuff);

  while (1)
  {   

  }
        
}
====================================
根据我的理解printf应该会输出字符 'a' 才对但是并没有。**大神解答
Henryko 发表于 2023-9-29 20:48 | 显示全部楼层
handBuff没分配空间吗?
Stahan 发表于 2023-9-30 11:13 | 显示全部楼层
Henryko 发表于 2023-9-29 20:48
handBuff没分配空间吗?

可能是这个问题
中国龙芯CDX 发表于 2024-4-29 08:31 | 显示全部楼层
应该是串口DMA发送的问题
万图 发表于 2024-9-6 07:12 | 显示全部楼层

把这干扰信号再次辐射出去
Uriah 发表于 2024-9-6 08:15 | 显示全部楼层

对变换器效率测量
帛灿灿 发表于 2024-9-6 10:11 | 显示全部楼层

印制电路板(PCB)的线路设计
Bblythe 发表于 2024-9-6 11:14 | 显示全部楼层

含有延展到远高于基本开关频率的谐波
周半梅 发表于 2024-9-6 13:10 | 显示全部楼层

需要设定一个阈值来对像素点进行设置
Pulitzer 发表于 2024-9-6 14:13 | 显示全部楼层

输入电容主要是起到高频能量存储器的作用
童雨竹 发表于 2024-9-6 16:09 | 显示全部楼层

二值化就是让图像的像素点矩阵中的每个像素点的灰度值为0(黑色)或者255(白色
Wordsworth 发表于 2024-9-6 17:12 | 显示全部楼层

它们对PCB布局的重要性
Clyde011 发表于 2024-9-6 18:15 | 显示全部楼层

混淆的话,会引起电源工作不稳定
公羊子丹 发表于 2024-9-6 19:08 | 显示全部楼层

通过OV7670摄像头进行图像采集
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2122

主题

8121

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部