我的想法是使用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' 才对但是并没有。 希望大神解答  查一下配置。 如果是单次发送,发送前要重新配置 CNDTR寄存器。
30M-50M辐射不过在测试辐射的时候30M-50M出现了问题。一般这个频段和MOS有关系,先RCD:D用1N4007 VCC的D用也是1N4007,变压器内部是两个屏蔽,MOS S套磁珠 ,不过,然后再这个基础上MOS用RC吸收,22R 和 电力用直流电源自动调压装置的研制1 引言电力系统所需的直流电源,都是由直流电源系统提供的,而直流电源系统的输出为合闸母线和控制母线两部分。合闸母线的电压即为充电机输出电压值,合闸母线的电压高,其作用是为合闸机构提供操作电源。控制母线 固态硬盘电源架构优化 4月08日 第三届·无线通信技术研讨会 立即报名 12月04日 2015•第二届中国IoT大会 精彩回顾 10月30日ETF•智能硬件开发技术培训会 精彩回顾 10月23日ETF•第三届 消费
|