打印
[STM32F1]

stm32f103c8t6使用DMA配置及理解

[复制链接]
599|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发送的问题

使用特权

评论回复
5
万图| | 2024-9-6 07:12 | 只看该作者

把这干扰信号再次辐射出去

使用特权

评论回复
6
Uriah| | 2024-9-6 08:15 | 只看该作者

对变换器效率测量

使用特权

评论回复
7
帛灿灿| | 2024-9-6 10:11 | 只看该作者

印制电路板(PCB)的线路设计

使用特权

评论回复
8
Bblythe| | 2024-9-6 11:14 | 只看该作者

含有延展到远高于基本开关频率的谐波

使用特权

评论回复
9
周半梅| | 2024-9-6 13:10 | 只看该作者

需要设定一个阈值来对像素点进行设置

使用特权

评论回复
10
Pulitzer| | 2024-9-6 14:13 | 只看该作者

输入电容主要是起到高频能量存储器的作用

使用特权

评论回复
11
童雨竹| | 2024-9-6 16:09 | 只看该作者

二值化就是让图像的像素点矩阵中的每个像素点的灰度值为0(黑色)或者255(白色

使用特权

评论回复
12
Wordsworth| | 2024-9-6 17:12 | 只看该作者

它们对PCB布局的重要性

使用特权

评论回复
13
Clyde011| | 2024-9-6 18:15 | 只看该作者

混淆的话,会引起电源工作不稳定

使用特权

评论回复
14
公羊子丹| | 2024-9-6 19:08 | 只看该作者

通过OV7670摄像头进行图像采集

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2034

主题

7335

帖子

10

粉丝