哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

STM32F0xx_ DMA收發(fā)USART數(shù)據(jù)配置詳細(xì)過程

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-04-08 09:02 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

關(guān)于DMA(Direct Memory Access)的功能,前面關(guān)注我微信的人應(yīng)該知道,其實我已經(jīng)在F1芯片上簡單講了一下。有網(wǎng)友要求在F0講解一下使用DMA收發(fā)串口數(shù)據(jù)。今天就應(yīng)網(wǎng)友要求總結(jié)一下在F0芯片上,使用DMA方式傳輸(收發(fā))USART數(shù)據(jù)的功能。

在多種芯片上(F0、F1、F2、F3、F4)了解過DMA模塊功能的朋友可能會發(fā)現(xiàn)一個特點,就是DMA的功能有很多相似的地方,甚至是一樣。其實,每一個模塊在不同系列芯片(甚至不同廠商)基本上是大同小異,這就是所謂的觸類旁通。對于軟件開發(fā)也是一樣的,當(dāng)你學(xué)會某一項語言的開發(fā),接觸其他語言的開發(fā)就很容易了。這里我想說,其實我對ST大部分芯片(全系列芯片STM8、STM32)都了解過,很多都是相似,只要有時間,后期還會總結(jié)一下STM8開發(fā)的的文章。當(dāng)然,更多精彩內(nèi)容也會出現(xiàn)(如:UCOS操作系統(tǒng)等)。

DMA的功能和用途這里就不在講述了,今天重點以查詢方式總結(jié)STM32F0xx使用DMA收發(fā)USART數(shù)據(jù)配置詳細(xì)過程 。另外提供一種以中斷方式使用DMA收發(fā)USART數(shù)據(jù)的軟件工程,感興趣的朋友請自行下載軟件工程源代碼進(jìn)行研究。

下載

ST標(biāo)準(zhǔn)外設(shè)庫和參考手冊、數(shù)據(jù)手冊等都可以在ST官網(wǎng)下載,你也可以到我的360云盤下載。關(guān)于F0系列芯片的參考手冊有多個版本(針對F0不同芯片),但有一個通用版本,就是“STM32F0x128參考手冊V8(英文)2015-07”建議參考該手冊,以后如果你換用一種型號芯片也方便了解。

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

查詢方式:

https://yunpan.cn/cSbcTa9ijncY2訪問密碼 152a

中斷方式:

https://yunpan.cn/cSbc7T4cxqWah訪問密碼 7e7f

STM32F0xx的資料可以在我360云盤下載:

https://yunpan.cn/cS2PVuHn6X2Bj訪問密碼 8c37

準(zhǔn)備工作

在昨天的軟件工程基礎(chǔ)上,新建源程序文件(dma.c 和 dma.h),在工程中添加新建的源程序文件dma.c和使用到標(biāo)準(zhǔn)外設(shè)庫stm32f0xx_dma.c。如何在工程中添加源文件請看以前的文章“STM32F0_新建軟件工程詳細(xì)過程”,添加完成如下圖:


注意:

文件所在位置最好對應(yīng)目錄,方便管理。比如:dma.c放在bsp文件下,添加在工程中Bsp組下面。

數(shù)據(jù)傳輸原理

DMA是介于內(nèi)存(如:一個數(shù)組)和外設(shè)(如:USART、ADC等)之間進(jìn)行數(shù)據(jù)交換的一個模塊控制器。從DMA的系統(tǒng)框圖(下圖)中也能大概看得出整個模塊數(shù)據(jù)傳輸?shù)脑怼jP(guān)于DMA模塊在F0芯片中有幾點需要注意,請看最后重點。

配置過程詳情

①RCC時鐘


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

我個人習(xí)慣第一步配置時鐘,ST官方提供的例程也是把配置時鐘放在前面。關(guān)于RCC時鐘的配置比較重要,有好幾次我就是由于沒有配置相應(yīng)RCC時鐘,讓我找了很久的問題,最后才發(fā)現(xiàn)是RCC時鐘沒有配置。

注意:

外設(shè)時鐘不要隨便添加,比如:RCC_APB1外設(shè)不要配置在RCC_APB2時鐘里面【如:RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);這樣能編譯過,但是錯誤的】

我每次都提醒RCC時鐘,是因為很多人就是因為時鐘而導(dǎo)致軟件運(yùn)行有問題,所以,提醒更多人要注意配置RCC.

②DMA傳輸(內(nèi)存->外設(shè))的配置


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

重點注意:

1、傳輸方向:這里是內(nèi)存(數(shù)組) -> 外設(shè)(串口);

2、通道:使用MDA1通道2(串口發(fā)送)。

③DMA傳輸(外設(shè)->內(nèi)存)的配置


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

和上面注意的地方一樣,也是這兩個函數(shù)接口之間的差異。

④DMA傳輸串口的效果


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

這是實際運(yùn)行的效果函數(shù)。

1、上電發(fā)送數(shù)據(jù)“DMA_Start...”;

2、等待接收10字節(jié)數(shù)據(jù)(DMA方式接收10字節(jié)數(shù)據(jù));

3、DMA方式發(fā)送該10字節(jié)數(shù)據(jù),等待發(fā)送完成。

4、依次循環(huán)下去。

今天的重點

A、通道的選擇

由于F0芯片有些芯片只有DMA1,沒有DMA2,有些DMA1有5個通道,有些DMA1有7個通道,這些需要根據(jù)手冊針對型號進(jìn)行配置,這里不能選擇錯誤,否則不能使用DMA功能。

B、傳輸?shù)拈L度

由于最大只能傳輸數(shù)量為65536,在實際項目開發(fā)中,可能有更大的數(shù)據(jù)需要傳輸,這時就需要分開傳輸才行。

C、傳輸數(shù)據(jù)寬度

數(shù)據(jù)的寬度如果傳輸兩者之間一樣的話,其實沒什么需要注意的。但是,如果數(shù)據(jù)寬度不同的話,這里就需要注意了,具體見手冊,這里只是提出來是重點,感興趣的朋友請自行研究啊。

說明

STM32F0的芯片軟件兼容性很好,可以適用于F0其他很多型號的芯片(具體請看手冊、或者親自測試)。

今天的工程是基于工程“STM32F0xx_TIM基本延時配置詳細(xì)過程”修改而來,以上實例總結(jié)僅供參考,若有不對之處,敬請諒解。

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

    關(guān)注

    3

    文章

    582

    瀏覽量

    106228
  • USART
    +關(guān)注

    關(guān)注

    1

    文章

    202

    瀏覽量

    33298
  • STM32F0
    +關(guān)注

    關(guān)注

    0

    文章

    61

    瀏覽量

    17893
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    STM32F427xx/STM32F429xx微控制器:高性能與多功能的完美結(jié)合

    STM32F427xx/STM32F429xx微控制器:高性能與多功能的完美結(jié)合 在嵌入式系統(tǒng)設(shè)計領(lǐng)域,選擇一款合適的微控制器對于項目的成功至關(guān)重要。STMicroelectronics
    的頭像 發(fā)表于 03-31 16:35 ?136次閱讀

    STM32L072xx 超低功耗32位MCU,基于ArmR的Cortex-M0+規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《STM32L072xx 超低功耗32位MCU,基于ArmR的Cortex-M0+規(guī)格書.pdf》資料免費下載
    發(fā)表于 03-20 15:58 ?0次下載

    中科芯CKS32F107XX系列MCU的bxCAN介紹

    ;外設(shè)中具有3個發(fā)送郵箱,發(fā)送報文的優(yōu)先級可以使用軟件控制,還可以記錄發(fā)送的時間;具有2個3級深度的接收FIFO,可使用過濾功能只接收或不接收某些ID號的報文;可配置成自動重發(fā);不支持使用 DMA進(jìn)行數(shù)據(jù)
    的頭像 發(fā)表于 01-22 09:06 ?3832次閱讀
    中科芯CKS32<b class='flag-5'>F107XX</b>系列MCU的bxCAN介紹

    LAT1171+STM32F745 USART1 Bootloader 失敗原因分析與解決

    使用 STM32F745 進(jìn)行產(chǎn)品開發(fā)的時候,出現(xiàn)了使用 STM32CubeProgramer 無法通過 USART1 Bootloader 進(jìn)行程序升級的問題。為了解決客戶的問題,我在 NUCLEO-
    發(fā)表于 01-11 17:33 ?0次下載

    CW32F030的DMA問題求解

    CPU處理數(shù)據(jù)搬運(yùn)工作,上面這個過程STM32DMA完全不需要CPU參與,CW 搞個寫REPEAT位這不是多此一舉嗎?如何避免這個問題?
    發(fā)表于 12-08 08:07

    SDK資源包bug drv_usart.c不能使用UART9及以上的串口怎么解決?

    問題一: 用Studio生成STM32F4工程,發(fā)現(xiàn)在board.h 配置串口9(BSP_USING_UART9)有問題,觀察drv_usart.c文件發(fā)現(xiàn)沒有串口8以上的代碼。 注:stm3
    發(fā)表于 09-25 06:37

    GD32的串口DMA收發(fā)數(shù)據(jù)失敗怎么解決?

    我在使用RTT的GD32F303的BSP時,配置使用串口DMA收發(fā)(rt_device_open),發(fā)現(xiàn)錯誤,最終無法收發(fā)
    發(fā)表于 09-17 06:04

    STM32H743 UART DMA接收不到數(shù)據(jù)是為什么?

    ); rt_thread_mdelay(1000); } } 使用串口助手,PC端能收到“hello”,但是PC端下發(fā)的數(shù)據(jù),沒有收到。 如果配置上不使用DMA,串口收發(fā)沒問題。
    發(fā)表于 09-11 07:14

    STM32F10xxx參考手冊

    STM32F1XX數(shù)據(jù)手冊中文版
    發(fā)表于 07-10 16:09 ?10次下載

    STM32F407多機(jī)RS485串口通訊+地址位喚醒+DMA空閑線接收,無法進(jìn)入中斷服務(wù)程序怎么處理?

    uint16_t uart3_rx_buffer[USART3_RXBUF_SIZE];//串口接收數(shù)據(jù)緩存數(shù)組 UART3Ctl UART3ctl; / USER CODE END 0
    發(fā)表于 07-10 07:28

    基于APM32F411 DMA_ADC Handler模式分析及解決

    最近在編寫DMA_ADC例程的過程中出現(xiàn)了一個中斷配置的問題,在ADC采集過程中,結(jié)合手冊進(jìn)行ADC連續(xù)轉(zhuǎn)換模式配置采集,手冊上給出需要進(jìn)行
    的頭像 發(fā)表于 06-24 14:30 ?1200次閱讀
    基于APM32<b class='flag-5'>F</b>411 <b class='flag-5'>DMA</b>_ADC Handler模式分析及解決

    STM32F4標(biāo)準(zhǔn)外設(shè)庫資料

    stm32f4xx.h,標(biāo)準(zhǔn)外設(shè)庫
    發(fā)表于 06-08 09:49 ?5次下載

    STM32F40xxx和STM32f41xx flash編程手冊

    PM0081_STM32F40xxx and STM32F41xxx單片機(jī)編程手冊
    發(fā)表于 06-06 17:02 ?8次下載

    第二十四章 通用同步異步收發(fā)器(USART)

    本文介紹了W55MH32的通用同步異步收發(fā)器(USART),其支持全雙工異步通信、NRZ格式,具分?jǐn)?shù)波特率發(fā)生器,可編程數(shù)據(jù)字長、停止位等。支持LIN、IrDA等模式,有DMA及多種中
    的頭像 發(fā)表于 05-29 15:44 ?2442次閱讀
    第二十四章 通用同步異步<b class='flag-5'>收發(fā)</b>器(<b class='flag-5'>USART</b>)

    如何使用EXIT0來觸發(fā)DMA實現(xiàn)SPI發(fā)送數(shù)據(jù)?

    請問一下,我想使用EXIT0來觸發(fā)DMA實現(xiàn)SPI發(fā)送數(shù)據(jù)。我現(xiàn)在使用PB0作為EXIT0的觸發(fā)源,我把PB
    發(fā)表于 04-23 07:31
    肥城市| 怀仁县| 西贡区| 灵台县| 从江县| 固镇县| 尼勒克县| 中宁县| 青岛市| 吉木乃县| 长岛县| 澎湖县| 三明市| 云南省| 吕梁市| 平舆县| 略阳县| 西乌珠穆沁旗| 金门县| 南木林县| 九江市| 连平县| 博湖县| 浦东新区| 石门县| 兴仁县| 阳泉市| 扬中市| 柳江县| 昌宁县| 丰原市| 浮山县| 甘南县| 临沂市| 孟津县| 封开县| 兴义市| 拉孜县| 永昌县| 临夏市| 昂仁县|