現在寫了發送和接收,接收的時候需要一個緩沖區,兩個程序用的都是串口1,PA9和PA10,可以直接運行現在是數據從內存到數據寄存器、從數據寄存器到內存。
大家有哪些DMA和串口配合的程序也可以分享,我暫時就想到這兩個
DMA串口接收數據寄存器到內存.rar
(315.29 KB, 下載次數: 20)
2018-7-5 01:20 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
DMA串口發送內存到數據寄存器.rar
(315.42 KB, 下載次數: 13)
2018-7-5 01:20 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
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 ---------------------------------------------------------*/
復制代碼
|