找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2173|回复: 1
打印 上一主题 下一主题
收起左侧

自己写的stm32串口和DMA的配合程序的分享

[复制链接]
跳转到指定楼层
楼主
ID:124010 发表于 2018-7-4 16:51 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
现在写了发送和接收,接收的时候需要一个缓冲区,两个程序用的都是串口1,PA9和PA10,可以直接运行现在是数据从内存到数据寄存器、从数据寄存器到内存。
大家有哪些DMA和串口配合的程序也可以分享,我暂时就想到这两个
DMA串口接收数据寄存器到内存.rar (315.29 KB, 下载次数: 20)
DMA串口发送内存到数据寄存器.rar (315.42 KB, 下载次数: 13)


stm32单片机源程序如下:
  1. /* Includes ------------------------------------------------------------------*/
  2. #include        "stm32f10x.h"
  3. #include        "bsp.h"
  4. #include        "tim.h"
  5. #include        "delay.h"
  6. #include        "bitband.h"
  7. #include        "usart.h"
  8. #include        "dma.h"
  9. /* Private define ------------------------------------------------------------*/

  10. /* Private variables ---------------------------------------------------------*/
  11. uint8_t Sendbuff[3000]={0};//定义外部变量数组

  12. /* Private function prototypes -----------------------------------------------*/

  13. /* Private functions ---------------------------------------------------------*/

  14. /**
  15.   * @brief   Main program
  16.   * @param  None
  17.   * @retval None
  18.   */
  19. int main(void)
  20. {
  21.         /* Private variables ---------------------------------------------------------*/
  22.         u32 i;
  23.         /* User Code ---------------------------------------------------------*/
  24.         BSP_Config();
  25.         delay_init();
  26.         usart_config();
  27.         usart_gpio_config();
  28.         DMA_Config();
  29. //在内存中存储3000个数据,
  30.         for(i=0;i<1000;i++){Sendbuff[i]='A';}
  31.         for(i=1000;i<2000;i++){Sendbuff[i]='B';}
  32.         for(i=2000;i<3000;i++){Sendbuff[i]='C';}
  33.         DMA_Cmd(DMA1_Channel4, ENABLE);//使能DMA通道4
  34.         USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE);//串口1发送DMA请求
  35.         /* Main Loop ---------------------------------------------------------*/
  36.         while(1)
  37.         {       
  38.                         LED1_ON();
  39.                         delay_ms(500);
  40.                         LED1_OFF();
  41.                         delay_ms(500);
  42.         }
  43. }
  44. /* Private functions ---------------------------------------------------------*/


复制代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:124010 发表于 2018-7-4 17:26 | 显示全部楼层
求一个DMA和USART 收发不定长数据的程序,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表