0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32F1 _DMA_USART

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-04-08 10:23 ? 次閱讀

前言

今天總結(jié)“STM32F103DMA_USART”,DMA學(xué)習(xí)過(guò)計(jì)算機(jī)人都明白它是什么意思,就是直接存儲(chǔ)器存?。―irect Memory Access),很多人都知道它的意思,但基本上不知道的怎么用,或者不知道它的用途。其實(shí)DMA在計(jì)算機(jī)里面是非常重要的,它可以減少CPU的資源。大家都用U盤(pán)拷貝過(guò)數(shù)據(jù),這就是很常見(jiàn)的DMA應(yīng)用。假如不適用DMA傳輸數(shù)據(jù),我們拷貝大文件的時(shí)候,我們的電腦操作其他應(yīng)用程序的時(shí)候估計(jì)會(huì)把電腦卡死。

今天就總結(jié)一下DMA常用于串口通信的例子,實(shí)例源代碼請(qǐng)自行下載。由于時(shí)間有限,只講解了DMA發(fā)送及中斷,接收這一塊還沒(méi)有來(lái)得及整理,后期我將以實(shí)例講解,請(qǐng)持續(xù)關(guān)注。

下載

提供下載的“軟件工程”都是在硬件板子上進(jìn)行多次測(cè)試、并保證沒(méi)問(wèn)題才上傳至360云盤(pán)。

今天的軟件工程下載地址(360云盤(pán)):

https://yunpan.cn/cSdzWimMT8v7S訪問(wèn)密碼 4a02

STM32F10x的資料可以在我360云盤(pán)下載:

https://yunpan.cn/crBUdUGdYKam2訪問(wèn)密碼 ca90

內(nèi)容講解

工程概要說(shuō)明: 今天使用DMA1通道4(這里是重點(diǎn),下面講解)傳輸串口發(fā)送的數(shù)據(jù)。工程配置串口使能DMA傳輸,DMA按要求發(fā)送完成會(huì)響應(yīng)DMA中斷,這時(shí)在中斷里變化一次LED,以提示的作用。關(guān)于串口使用DMA接收的原理類(lèi)似,后期我會(huì)舉例講解。

提供的工程以簡(jiǎn)單為原則,詳細(xì)中文注釋,方便自己方便大家。

關(guān)于“STM32F103 DMA_USART”我把重要的幾點(diǎn)在下面分別講述:

一、RCC時(shí)鐘

該函數(shù)位于bsp.c文件下面;

注意:

這里是使用RCC_AHBPeriphClockCmd,我開(kāi)始調(diào)試的時(shí)候,使用RCC_APB1PeriphClockCmd,怎么都不行,結(jié)果我才發(fā)現(xiàn)時(shí)鐘錯(cuò)了。

二、DMA的NVIC配置

該函數(shù)位于bsp.c文件下面;

由于使用DMA中斷,這里必須配置才能響應(yīng)中斷。

三、DMA輸出配置

該函數(shù)位于main.c文件下面;

主要就是我框出來(lái)的兩點(diǎn)比較重要,串口發(fā)送數(shù)據(jù)寄存器地址,中斷需要配置。

這里我封裝成一個(gè)發(fā)送函數(shù)接口,所以下面是直接調(diào)用這個(gè)函數(shù)。

四、DMA中斷

該函數(shù)位于stm32f10x_it.c文件下面;

提出來(lái)說(shuō),有兩點(diǎn):1、函數(shù)必須有。2、需要清除標(biāo)志位。

五、今天的重點(diǎn)

為什么是“DMA1_Channel4”,開(kāi)始學(xué)習(xí)的人很納悶,其實(shí)這里是規(guī)定的(定的要求,見(jiàn)手冊(cè))。

說(shuō)明

今天提供的軟件工程基于STM32F103大容量芯片,其實(shí)只要適當(dāng)修改工程的部分配置,STM32F1的芯片都適用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    554

    瀏覽量

    100203
  • USART
    +關(guān)注

    關(guān)注

    1

    文章

    195

    瀏覽量

    30739
  • STM32F10
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    15590
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32CUBEMX(2)--USART通過(guò)DMA方式接收不定長(zhǎng)數(shù)據(jù)

    的不同,有一個(gè)或兩個(gè)DMA模塊。 STM32F0XX DMA控制器總共有5個(gè)通道用于DMA1,每個(gè)通道都專門(mén)管理來(lái)自一個(gè)或多個(gè)外設(shè)的存儲(chǔ)器訪問(wèn)請(qǐng)求。它具有一個(gè)仲裁器,用于處理不同的
    發(fā)表于 09-04 11:48

    如何使用STM32F1控制ESP8266?

    如何使用STM32F1控制ESP8266?
    發(fā)表于 07-09 06:21

    自制一款兼容STM32F1/F4芯片的飛控板

    自己制作的一款兼容STM32F1/F4芯片的飛控板。
    發(fā)表于 07-04 14:07 ?0次下載

    【GD32F303紅楓派開(kāi)發(fā)板使用手冊(cè)】第十六講 USART-DMA串口收發(fā)實(shí)驗(yàn)

    在前面ADC章節(jié)中,我們介紹了DMA的工作原理,這里就不多做介紹。從GD32F303用戶手冊(cè)中可以查到,各串口的TX和RX分別對(duì)應(yīng)DMA的不同通道,比如USART0的TX對(duì)應(yīng)
    的頭像 發(fā)表于 06-15 09:54 ?857次閱讀
    【GD32<b class='flag-5'>F</b>303紅楓派開(kāi)發(fā)板使用手冊(cè)】第十六講 <b class='flag-5'>USART-DMA</b>串口收發(fā)實(shí)驗(yàn)

    如何在STM32F439 DMA流中斷中區(qū)分是哪個(gè)通道產(chǎn)生的中斷?

    STM32F439有兩個(gè)DMA控制器DMA1DMA2,每個(gè)控制器有8個(gè)流,每個(gè)流有8個(gè)通道,我做的是采用串口1DMA中斷接收數(shù)據(jù),
    發(fā)表于 05-17 08:20

    STM32F103的DMA無(wú)法實(shí)現(xiàn)共存怎么解決?

    有幸在工程中用到STM32F103的DMA功能,而且是兩個(gè)串口(USART2和USART3)都需要用到DMA功能來(lái)實(shí)現(xiàn)數(shù)據(jù)傳輸。以前用
    發(fā)表于 05-11 07:14

    STM32F1內(nèi)部ADC的DUAL MODE的使用問(wèn)題求解

    我想利用STM32F1內(nèi)部的ADC采集四路電壓值,因?yàn)橐笸瑫r(shí)采集,所以我使用了ADC的DUAL MODE,可是由于始終未能讀明白芯片手冊(cè)!ADC的設(shè)置與DMA的設(shè)置基本上參考STM32F1提供
    發(fā)表于 05-09 06:51

    STM32f1怎么判斷引起CAN發(fā)送中斷的ID是哪個(gè)?

    STM32f1怎么判斷引起CAN發(fā)送中斷的ID是哪個(gè)
    發(fā)表于 04-03 07:46

    STM32F1的LL庫(kù),RTC怎么不能設(shè)置日期?

    STM32F1的LL庫(kù),RTC 怎么不能設(shè)置日期,只能設(shè)置時(shí)間。
    發(fā)表于 03-29 07:02

    STM32F405 uart DMA收發(fā)數(shù)據(jù)輸出亂碼怎么解決?

    *p_buffer, uint32_t g_len ){while( !LL_USART_IsActiveFlag_TXE( USART2 ) );LL_DMA_ClearFlag_TC6(
    發(fā)表于 03-08 07:38

    請(qǐng)問(wèn)如何快速移植stm32f1的程序到STM32C0中?

    如何快速移植stm32f1的程序到STM32C0中?
    發(fā)表于 03-08 06:54

    STM32F405 DMA+空閑中斷接收,DMA_GetCurrDataCounter(DMA1_Stream1)與實(shí)際發(fā)送數(shù)據(jù)不符怎么解決?

    我在寫(xiě)STM32F405 DMA+空閑中斷接收。用的USART3。 看了網(wǎng)上很多調(diào)試的帖子,但都不行。求幫忙! 1)我設(shè)置的BufferSize是16,必須要滿足16個(gè)數(shù)后,才能觸發(fā)
    發(fā)表于 03-07 08:28

    stm32f1如何將外部中斷關(guān)掉hal庫(kù)

    STM32F1系列微控制器是STMicroelectronics制造的32位ARM Cortex-M3內(nèi)核的嵌入式微控制器系列。該系列采用了HAL庫(kù)(Hardware Abstraction
    的頭像 發(fā)表于 12-22 13:52 ?2903次閱讀

    STM32F1系列單脈沖模式下最小脈寬為多少?

    在微控制器領(lǐng)域,STM32F1系列是一款非常流行的產(chǎn)品,廣泛應(yīng)用于各種嵌入式系統(tǒng)設(shè)計(jì)。
    的頭像 發(fā)表于 12-13 09:58 ?790次閱讀

    stm32 LL庫(kù)開(kāi)發(fā)-DMA使用方法

    本文以stm32 F303K8為例,不同型號(hào)的DMA配置方法略有不同。
    的頭像 發(fā)表于 10-26 14:58 ?1215次閱讀
    <b class='flag-5'>stm32</b> LL庫(kù)開(kāi)發(fā)-<b class='flag-5'>DMA</b>使用方法