历史上的今天
返回首页

历史上的今天

今天是:2025年04月09日(星期三)

正在发生

2019年04月09日 | STM32F429 DMA串口数据发送

2019-04-09 来源:eefocus

串口数据配置


void macUART4_Config(void)

{

    GPIO_InitTypeDef GPIO_InitStructure;

  USART_InitTypeDef USART_InitStructure;


    RCC_AHB1PeriphClockCmd(macUART4_RX_GPIO_CLK|macUART4_TX_GPIO_CLK,ENABLE);

  RCC_APB1PeriphClockCmd(macUART4_CLK, ENABLE);


  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;  

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;


  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

  GPIO_InitStructure.GPIO_Pin =  macUART4_TX_PIN  ;  

  GPIO_Init(macUART4_TX_GPIO_PORT, &GPIO_InitStructure);


  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

  GPIO_InitStructure.GPIO_Pin =  macUART4_RX_PIN;

  GPIO_Init(macUART4_RX_GPIO_PORT, &GPIO_InitStructure);


GPIO_PinAFConfig(macUART4_RX_GPIO_PORT,macUART4_RX_SOURCE,macUART4_RX_AF);

  GPIO_PinAFConfig(macUART4_TX_GPIO_PORT,macUART4_TX_SOURCE,macUART4_TX_AF); 


  USART_InitStructure.USART_BaudRate = macUART4_BAUDRATE;

  USART_InitStructure.USART_WordLength = USART_WordLength_8b;

  USART_InitStructure.USART_StopBits = USART_StopBits_1;

  USART_InitStructure.USART_Parity = USART_Parity_No;

  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

  USART_Init(macUART4, &USART_InitStructure); 

  USART_Cmd(macUART4, ENABLE);

}


DMA配置函数,请和DMA串口接收数据配置函数对比


void DMA_Config(void)

{

    DMA_InitTypeDef DMA_InitStructure;                //

    RCC_AHB1PeriphClockCmd(macUART4_DMA_CLK, ENABLE); //

    DMA_DeInit(macUART4_TX_DMA_STREAM);               //


  while (DMA_GetCmdStatus(macUART4_TX_DMA_STREAM) != DISABLE){

  } 


    DMA_InitStructure.DMA_Channel = macUART4_TX_DMA_CHANNEL;             //

  DMA_InitStructure.DMA_PeripheralBaseAddr = macUART4_DR_BASE;         //

  DMA_InitStructure.DMA_Memory0BaseAddr = (u32)SendBuff;               //


  DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;                //

  DMA_InitStructure.DMA_BufferSize = macUART4_SEND_BUFF_SIZE;          //

  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;     //

  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                //

  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;   //

  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;        //

  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                        //

  DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;                //

  DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;               // 

  DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;        //  

  DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;          //

  DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;  //


  DMA_Init(macUART4_TX_DMA_STREAM, &DMA_InitStructure);                   //     

  DMA_Cmd(macUART4_TX_DMA_STREAM, ENABLE);                                 


    while(DMA_GetCmdStatus(macUART4_TX_DMA_STREAM) != ENABLE)

  {

  }

}

主函数,调试串口和UART4同时发送数据,相互并不影响


int main(void)

{

    int i;

    SysTick_Init();

    NVIC_Configuration();

    Debug_USART_Config();

    macUART4_Config();

    DMA_Config();

    printf("Hello World!nn");


    for(i=0;i

  {

    SendBuff[i]  = 'A';

  }


    USART_DMACmd(macUART4, USART_DMAReq_Tx, ENABLE);


    while(1)

    {

        printf("Hello World!n");

    }

}


该程序中没有涉及中断程序,DMA的使用本应该尽量避免使用中断。


推荐阅读

史海拾趣

Equator Technologies公司的发展小趣事

面对日益激烈的市场竞争和技术变革,Equator始终保持着持续创新的精神。公司不断投入研发资源,探索新的技术方向和应用场景。例如,在人工智能和机器学习领域,Equator正在积极开展相关研究和实践工作,探索将这些先进技术应用于视频处理领域的可能性。通过持续创新和努力,Equator正致力于引领电子行业未来的发展方向。

Bud Industries公司的发展小趣事

在XX年代中期,Equator迎来了一个重要的转折点——被Pixelworks公司收购。Pixelworks是一家在显示图像处理领域具有领先地位的公司,其产品线广泛,包括用于各种显示设备的图像处理芯片和软件。与Pixelworks的合并使Equator获得了更广阔的市场和资源支持,加速了其技术和产品的发展。合并后,Equator继续专注于视频处理技术的研发,并与Pixelworks共同推出了多款创新产品。

贝特莱公司的发展小趣事

深圳贝特莱电子科技股份有限公司成立于2011年7月,从一开始,公司就明确了以技术研发为核心的发展战略。依托专业团队多年的行业资源积累,贝特莱致力于开发具有自主知识产权的核心技术。在指纹识别、触控、生命感知及MCU等芯片领域,贝特莱不断取得突破,为后续的市场拓展奠定了坚实的基础。

C.K Magma公司的发展小趣事

随着技术的成熟,C.K Magma公司开始将产品推向市场。他们积极与各大电子厂商合作,为其提供高性能的半导体解决方案。同时,公司还注重品牌建设,通过参加行业展会、举办技术研讨会等方式,提升品牌知名度和影响力。随着市场份额的逐步扩大,C.K Magma公司逐渐在电子行业中树立起了自己的地位。

FCT Electronics公司的发展小趣事

在国内市场取得成功后,FCT Electronics开始将目光投向国际市场。公司积极参加国际电子展会,与多家国际知名企业建立了合作关系。凭借出色的产品性能和专业的客户服务,FCT Electronics的测试设备逐渐在海外市场上占据了一席之地,为公司的国际化发展奠定了坚实基础。

Highland Electronics Co Ltd公司的发展小趣事

High Tech Chips Inc深知人才是企业发展的核心竞争力。因此,公司一直将人才战略放在企业发展的重要位置。公司不仅吸引了大量来自国内外顶尖高校的优秀人才加盟,还建立了完善的人才培养体系和激励机制。通过举办技术交流会、设立创新基金等方式激发员工的创新潜能和工作热情。这些举措为公司的发展奠定了坚实的人才基础和技术储备。

问答坊 | AI 解惑

想学单片机求助

最近想学单片机,听说C51已经过时,所以想学AVR或ARM,有人指导一下吗?…

查看全部问答>

异步FIFO的verilog实现

一篇写得不错的论文,分享一下…

查看全部问答>

【视频下载】十天学会AVR单片机视频教程

本帖最后由 paulhyde 于 2014-9-15 09:07 编辑 十天学会AVR单片机视频教程 第一讲:开发板和软件的操作使用 1、 介绍配件。 2、 安装软件(ICC AVR 和AVR STUDIO)及其使用,包括新建工程、程序下载,仿真调试;整板测试;板上资源。 3、 着 ...…

查看全部问答>

内核处理器应用趋势下的高性能视频系统设计

时钟频率的提高带来的高功耗、深亚微米半导体制造工艺漏电流产生的高功耗以及更多的设计挑战促使处理器设计制造商开始将思路转向到多内核集成的解决方案上来。多核处理器技术是提高处理器性能的有效方法,因为处理器的实际性能是处理器在每个时钟周 ...…

查看全部问答>

freescale S08&coldfire v1 GPIO教程

大家参考下原文见我的博客: http://blog.ednchina.com/bluehacker/1687754/message.aspx …

查看全部问答>

Symbol(WinCE5) 使用keybd_event模拟扫描键

硬件设备:Symbol MC3000(作用是用来扫描条码) 系统:Wince5 Symbol MC3000设备上有一个扫描按键,按键的定义是(是厂家自己定义的,程序里按键消息名为WM_USER_TRIGGER): #define WM_USER_TRIGGER        WM_USER + 0x ...…

查看全部问答>

读取文本文件

我现在有段代码能读取ANSI编码方式的文本,可是UNICODE编码的文本却是打不开. 现在我想要既能读ANSI又能读UNICODE. 各位有什么办法不.         CFile file;         TCHAR* szMsg = new TCHAR[100]; &nbs ...…

查看全部问答>

求助:STM32评估板烧写SPIFLASH

                                 请问:在 STM32 评估板上,如何把 STM3210B-EVAL_SPIFlash.dfu 写进SPI FLASH ?…

查看全部问答>

线阵LED图文显示装置

设计并制作一个线阵LED图文显示装置,装置的示意图如图1所示。 (1)    制作一个由16只 LED构成的线状点阵及其控制电路,安装于可旋转的平台上,在平台的中心设置一个按键,用于功能的切换,电机带动平台以合适速度旋转。(2)  & ...…

查看全部问答>