日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]前言關(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方式傳輸(

前言

關(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ù)脑?。關(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)致軟件運行有問題,所以,提醒更多人要注意配置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文件下面;

這是實際運行的效果函數(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其他很多型號的芯片(具體請看手冊、或者親自測試)。


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

  UART   UART是一種通用串行數(shù)據(jù)總線,用于異步通信。該總線雙向通信,可以實現(xiàn)全雙工傳輸和接收。在嵌入式設(shè)計中,UART用于主機與輔助設(shè)備通信,如汽車音響與外接AP之間的通信,

關(guān)鍵字: uart usart

Ⅰ、概述關(guān)于SPI(Serial Peripheral Interface)串行外設(shè)接口可以說是單片機或者嵌入式軟件開發(fā)人員必須掌握的一項通信方式,就是你在面試相關(guān)工作的時候都可能會問及這個問題。在這里問一個簡單的問題:...

關(guān)鍵字: Flash stm32f0xx spi讀寫

void InitUart(void) { GPIO_InitTypeDef GPIO_InitStructure; #if 1// (USART_USED == USART1) RCC_AHBPeriph...

關(guān)鍵字: stm32f30x usart 串口 初始化順序

五、ATMEGA16的USART與PC機串行通信五—(02)、PC機發(fā)送字符給單片機,然后用液晶顯示發(fā)送的字符~~~這章節(jié)也是相對挺簡單的~~直接上圖片吧~~基本上就這么點吧~~然后就是程序了,這里我只是粘貼一下重要的程...

關(guān)鍵字: atmega16 avr單片機 usart 串行通信

終于,我忍不住想吐槽一下翻譯STM 32函數(shù)庫手冊的同學(xué)了,中間省略了好多東西而且是很重要的東西。。。。。。我的內(nèi)心幾乎是奔潰的?。?!現(xiàn)在就來仔細(xì)說說關(guān)于STM 32 函數(shù)庫3.5 中關(guān)于USART串口通信的坑:在一些教...

關(guān)鍵字: STM32 usart

五、ATMEGA16的USART與PC機串行通信五—(03)、PC機發(fā)送控制指令控制單片機工作~(這個控制還是比較簡單的~~,不過個人認(rèn)為還是有水平的~)還是先上圖片~~,然后程序,程序師模塊化的,我盡量貼全點~~然后就...

關(guān)鍵字: atmega16 avr單片機 usart 串行通信

一、簡單demo通過232串口,與上位機進(jìn)行通信。首先保證單片機232串口與電腦的串口接口相連,當(dāng)然電腦是USB接口,其實USB接口的實質(zhì)也是串口。我們實現(xiàn)上位機發(fā)送一個16進(jìn)制的數(shù)據(jù),單片機接受到數(shù)據(jù)后顯示,并且2倍發(fā)

關(guān)鍵字: STM32 usart 串口通信

前言前面我說過STM32的定時器功能很強大,今天就來總結(jié)一下它的另外一個“強大”功能:TIM的比較輸出功能,輸出可調(diào)PWM波形。直接調(diào)用函數(shù)接口“TIM2_CH1_PWM(uint32_t Freq, uint16_t...

關(guān)鍵字: stm32f0xx tim輸出 pwm配

#include "stm32f10x_lib.h"#include"stdio.h"#define USART1_DR_Base0x40013804#define SENDBUF...

關(guān)鍵字: STM32 usart

最近涉及到STM32F0XX的IAP,找了很多相關(guān)資料,感覺不是特別清楚,所以綜合一些資料分享一下。剛開始做的時候以為很簡單,在程序中寫了個跳轉(zhuǎn)函數(shù)(跳轉(zhuǎn)到System Memory,并運行MCU自己的Bootloade...

關(guān)鍵字: cortex-m0 iap stm32f0xx
關(guān)閉