现在写了发送和接收,接收的时候需要一个缓冲区,两个程序用的都是串口1,PA9和PA10,可以直接运行现在是数据从内存到数据寄存器、从数据寄存器到内存。
大家有哪些DMA和串口配合的程序也可以分享,我暂时就想到这两个
DMA串口接收数据寄存器到内存.rar
(315.29 KB, 下载次数: 20)
DMA串口发送内存到数据寄存器.rar
(315.42 KB, 下载次数: 13)
stm32单片机源程序如下:
- /* Includes ------------------------------------------------------------------*/
- #include "stm32f10x.h"
- #include "bsp.h"
- #include "tim.h"
- #include "delay.h"
- #include "bitband.h"
- #include "usart.h"
- #include "dma.h"
- /* Private define ------------------------------------------------------------*/
- /* Private variables ---------------------------------------------------------*/
- uint8_t Sendbuff[3000]={0};//定义外部变量数组
- /* Private function prototypes -----------------------------------------------*/
- /* Private functions ---------------------------------------------------------*/
- /**
- * @brief Main program
- * @param None
- * @retval None
- */
- int main(void)
- {
- /* Private variables ---------------------------------------------------------*/
- u32 i;
- /* User Code ---------------------------------------------------------*/
- BSP_Config();
- delay_init();
- usart_config();
- usart_gpio_config();
- DMA_Config();
- //在内存中存储3000个数据,
- for(i=0;i<1000;i++){Sendbuff[i]='A';}
- for(i=1000;i<2000;i++){Sendbuff[i]='B';}
- for(i=2000;i<3000;i++){Sendbuff[i]='C';}
- DMA_Cmd(DMA1_Channel4, ENABLE);//使能DMA通道4
- USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE);//串口1发送DMA请求
- /* Main Loop ---------------------------------------------------------*/
- while(1)
- {
- LED1_ON();
- delay_ms(500);
- LED1_OFF();
- delay_ms(500);
- }
- }
- /* Private functions ---------------------------------------------------------*/
复制代码
|