色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

電子發燒友網>LEDs>LED照明>猴年走進“多彩”的LED世界

猴年走進“多彩”的LED世界

123下一頁全文

本文導航

收藏

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴

評論

查看更多

相關推薦

LED產品應用大突破 創意設計盤點

其實除了平常所見毫無亮點的應用外,還有很多別具一格的創意應用,下面帶你走進LED另類應用的世界
2014-09-10 09:05:011150

美輪美奐 家居創意LED燈產品

美輪美奐 家居創意LED燈產品,這是一系列創意家居用品LED燈,有了它們,會讓我們的生活更加豐富多彩,一起來欣賞下吧。
2011-11-30 17:19:411902

LED——世界未來之光

字。Sharenow說,相當于60W的LED燈泡上市后,Switch相當于75W白熾燈的LED將會在11月上市,100W的模型將在2012年2月份發布。Sharenow 說:“這些燈泡終將改變世界!”
2011-09-23 16:29:14

世界著名的HiFi功放都有哪些?

世界著名的HiFi功放都有哪些?
2022-03-28 11:26:27

走進MEasy的世界:基于STM32MP1的IOT參考設計

`走進MEasy的世界:基于STM32MP1的IOT參考設計 在萬物互聯快速發展的趨勢下,板卡處理器性能、內存大小、接口外設等都是人們非常關心的硬件參數,但是如何讓硬件的作用實現它的功能最大化,一套
2020-02-24 15:46:30

走進嵌入式

零基礎要怎么樣學習嵌入式希望可以通過這一篇帖子讓大家走進嵌入式,對嵌入式的學習不再那么陌生。嵌入式Linux工程師的學習需要具備一定的C語言基礎,因此面對許多朋友只是在大一或者大二學習過C(還不
2022-02-23 07:29:56

Accessory Shield學習4:多彩LED

學會了如何發聲,下來就要開始學如何發光;雖然一開始在按鍵掃描那章有看到LED閃爍,但,,,,那真的太簡單了。本章我們學習高大上的多彩LED。原理大放送:多彩LED又稱為RGB燈,內置紅(R)、綠(G
2016-03-28 14:49:55

BakeBit - LED-Bar+ Light Sensor,完成外界亮度控制led燈效果

BakeBit - LED-Bar是一個多彩led模塊,模塊使用了五個內部集成了Ws2812控制芯片的多彩LED,每個LED內部有R、G、B三個發光二極管。Ws2812控制芯片串行讀取控制信號,并從
2017-02-21 17:45:01

HBO超現實VR體驗帶你走進西部世界 年度最期待的情景模式與現實世界的結合!

祝我們逛得開心。  下午2點30分,我舒服地坐在《西部世界》展臺的沙發上,服務員走過來,陪我走進這段神秘的虛擬現實體驗。她的做法就像是,《西部世界》是真實的存在,而不是電視劇。  她再次與我確認,我
2016-10-24 10:57:50

HarmonyOS IoT首著,走進萬物互聯的世界

無邊際的設備網絡,除了手機,還包括平板、電視和海量可穿戴設備。為了讓廣大技術開發者由淺入深,逐步構建HarmonyOS(鴻蒙操作系統)硬件知識體系,實現IoT設備開發,讓鴻蒙系統更快地走進萬物互聯
2021-06-16 16:45:05

HarmonyOS IoT首著,走進萬物互聯的世界

無邊際的設備網絡,除了手機,還包括平板、電視和海量可穿戴設備。為了讓廣大技術開發者由淺入深,逐步構建HarmonyOS(鴻蒙操作系統)硬件知識體系,實現IoT設備開發,讓鴻蒙系統更快地走進萬物互聯的世界
2021-06-16 17:08:43

PSoC 4試用+第一個項目:PWM控制多彩LED輸出

,做了一個LED多彩燈!把我用的文檔也分享給大家吧!其實官網上都有!使用心得:總體感覺有很多東西都不需要你自己去寫!比如PWM,電路搭建好后它會自動給你生成程序文件!CLOCK也是一樣!感覺和STM32
2013-10-18 00:13:45

SH381同步多彩LED驅動集成電路相關資料分享

SH-381它采用DIP-8與SOP-8兩種封裝形式。是采用CMOS工藝制造的三路多模式多彩同步LED閃光集成電路,配合高亮度紅、綠、藍色發光二極管可產生絢麗多彩的變色光效果。
2021-04-28 06:14:21

labview學習走進盲區,期待您的指點

學習labview斷斷續續將近一個月了,基礎知識都學習了一遍,現在開始看別人的程序以及一些高級編程的書籍,感覺還有好多好多都不懂,就是那種高深點不懂,基礎的一看就會的狀態。感覺現在的學習走進了盲區,希望高手們結合以前的學習過程指點下在下,感激不盡!
2013-04-06 22:34:13

“數字世界”基本的工作原理

而且可以不依賴人類自身的可以自動運行的數字世界,而計算機則是這個數字世界的基石。隨著計算機應用的普及和深入,這個數字世界的能力越來越強大,形式也越來越豐富多彩。所以,計算機的誕生意味著現代意義下完
2020-07-06 08:34:53

《從零開始走進FPGA世界》中的流水燈程序是不是錯了啊?

首先clk_design.v 模塊產生的使能時鐘頻率不是10Hz,其次led_display.v 模塊的遞增方式也無法產生流水燈效果啊?
2015-08-20 09:40:39

【GoKit申請】多彩智能云燈

本帖最后由 andy_wsj 于 2015-4-27 11:31 編輯 項目名稱:多彩智能云燈市場觀察: wifi聯網控制的LED最早的項目查到出現在澳大利亞,是一款比較新穎的產品。 市面常見
2015-04-27 11:26:22

【VEML6040環境顏色檢測試用體驗】感受多彩世界——Vishay VEML6040 環境顏色檢測開發套件評測一

感受多彩世界——Vishay VEML6040 環境顏色檢測開發套件評測近日,世平集團推出基于Vishay VEML 6040 ,藝術感超強的環境顏色檢測方案。此方案包含了Vishay 公司
2017-03-25 12:41:24

【廣東龍芯2K500先鋒板試用體驗】點亮RGB多彩發光板

LED很相似。1.2 龍芯2K0500開發板龍芯2K0500開發板的IO擴展口上預留了PWM的引腳,具體如下圖:這里使用PWM0、PWM1、PWM2三個引腳連接到多彩發光板,連接關系如下:10號針
2023-01-30 19:08:15

什么是“PSoC世界

你好朋友們,我正在張貼一個視頻鏈接,它將簡要地介紹什么是“PSoC世界”。http://Visual.CyPress .com /視頻庫/搜索/PSoC+世界/我想發布許多其他的視頻鏈接,促進
2019-07-24 06:51:32

從零開始走進FPGA-例程匯總

從零開始走進FPGA-例程匯總
2013-08-27 10:03:03

從零開始走進FPGA世界

從零開始走進FPGA世界
2020-03-12 13:11:17

從零開始走進FPGA世界 V2.0【轉】

` 本帖最后由 普萊斯隊長 于 2013-3-3 09:07 編輯 從零開始走進FPGA,總結我大學FPGA所學,并不能把您帶到多高的深度,只為將您帶進FPGA世界,希望能給你一點幫助,有
2012-08-10 11:03:44

你好,放大器 ~帶你走進運放的世界 快速上手設計運放電路

你好,放大器 ~帶你走進運放的世界 快速上手設計運放電路
2015-11-20 21:19:58

分析一線公司當前產品,看LED世界走向

分析一線公司當前產品,看LED世界走向
2021-06-01 07:08:32

廈門多彩光電子科技有限公司招聘LED技術員

針對客戶提出的各參數做出相應的配比; 3.對新的原材料進行試驗,降低成本等!職位要求1、國家重點大學理工科專業畢業或有LED行業相關工作經驗一年以上; 2、能吃苦耐勞,為人誠肯、好學;廈門多彩
2013-09-24 09:55:38

帶你走進STM32的世界

STM32F10xx時鐘系統框圖:時鐘是整個系統的脈搏下圖是STM32F10xx時鐘系統的框圖,通過這個圖可以一目了然地看到各個部件時鐘產生的路徑,還可以很方便地計算出各部分的時鐘頻率。STM32的四個時鐘源(HSI、HSE、LSI和LSE)也在圖中標出;圖中間的時鐘監視系統(CSS)是在很多ST7的單片機中就出現的安全設置。特別注意:圖的右邊,輸出定時器時鐘之前有一個乘法器,它的操作不是由程序控制的,是由硬件根據前一級的APB預分頻器的輸出自動選擇,當APB預分頻器的分頻因子為1時,這個乘法器無作用;當APB預分頻器的分頻因子大于1時,這個乘法器做倍頻操作,即將APB預分頻器輸出的頻率乘2,這樣可以保證定時器可以得到最高的72MHz時鐘脈沖。STM32上很多管腳功能可以重新映射STM32上有很多I/O口,也有很多的內置外設,為了節省引出管腳,這些內置外設都是與I/O口共用引出管腳,ST稱其為I/O管腳的復用功能,相信這點大家都很清楚,因為基本上所有單片機都是這么做的。但不知有多少人知道,很多復用功能的引出腳可以通過重映射,從不同的I/O管腳引出,即復用功能的引出腳位是可通過程序改變的。這一功能的直接好處是,PCB電路板的設計人員可以在需要的情況下,不必把某些信號在板上繞一大圈完成聯接,方便了PCB的設計同時潛在地減少了信號的交叉干擾。復用功能引出腳的重映射功能所帶來的潛在好處是,在你不需要同時使用多個復用功能時,虛擬地增加復用功能的數量。例如,STM32上最多有3個USART接口,當你需要更多UART接口而又不需要同時使用它們時,可以通過這個重映射功能實現更多的UART接口。下述復用功能的引出腳具有重映射功能:- 晶體振蕩器的引腳在不接晶體時,可以作為普通I/O口- CAN模塊- JTAG調試接口- 大部分定時器的引出接口- 大部分USART的引出接口- I2C1的引出接口- SPI1的引出接口詳細內容請看STM32的技術參考手冊。請務必記住:如果使用了任意一種重映射功能,在初始化和使用之前,一定要打開AFIO時鐘。下圖示出了部分復用功能引出腳的重映射結果:【演示實例】一個在EK-STM32F板子上的RTC作為calender的例子硬件連接:串口線連至板子的UART-0端口。超級終端設置為:Bits Per seconds: 115200Data bits: 8Parity: noneStop bits: 1Flow control Hardware板子第一次跑這個程序時,進入時間配置。根據超級終端上的提示,一次輸入年,月,日,時,分,秒(1月就輸入01,10月直接輸入10;同理3號就輸入03)隨后當前的時間就顯示到了超級終端上,并且每秒刷新。沒有斷電的情況下再跑這個程序,由于看到bake up區域有被設置過時間的標志,不再進入時間設置階段,而是直接到時間顯示間斷,在超級終端上,每秒刷新。當然如果在EK-STM32F板子上將Vbat和電池相接,具體就是:將紅色的電源跳線帽中的從下往上數的第5個取下,從原來的水平放置改成豎直放置(和上面的VBAT相連)。就算斷電,只要再上電,看到back up區域中的記號,一樣直接進入時間顯示。因為斷電后,back up區域由電池供電,其中記錄的記號不會由于系統掉電而消失。【演示實例】使用EK-STM32F板測量STM32的功耗這個例子演示了如何使用EK-STM32F開發評估板測量STM32F103VBT6在各種模式下的功耗。例子中演示了如何進入STM32的各種模式(RUN、SLEEP、STOP、STANDBY),使用這個例子您可以通過EK-STM32F板上的紅色跳線(VDD、VREF+和VDDA)測量功耗。本實例首先通過UART與Windows的Hyperterminal通信,用戶可以選擇需要進入的功耗模式,然后這個例程把用戶選好的配置存到后備寄存器,再次復位后STM32將進入之前選定的模式。附件包中包含了一個說明文件,詳細說明了如何設置板上的跳線和操作的過程。STM32 GPIO的十大優越功能綜述前幾天Hotpower邀請大家討論一下GPIO的功能、性能和優缺點(STM32的GPIO很強大~~~),等了幾天沒見太多人發言,但綜合來看提到了3點:1)真雙向IO,2)速度快,3)寄存器功能重復。關于第3點有說好,有說多余的,見仁見智。下面我就在做個拋磚引玉,根據ST手冊上的內容,簡單地綜述一下GPIO的功能:一、共有8種模式,可以通過編程選擇:1. 浮空輸入2. 帶上拉輸入3. 帶下拉輸入4. 模擬輸入5. 開漏輸出——(此模式可實現hotpower說的真雙向IO)6. 推挽輸出7. 復用功能的推挽輸出8. 復用功能的開漏輸出模式7和模式8需根據具體的復用功能決定。二、專門的寄存器(GPIOx_BSRR和GPIOx_BRR)實現對GPIO口的原子操作,即回避了設置或清除I/O端口時的“讀-修改-寫”操作,使得設置或清除I/O端口的操作不會被中斷處理打斷而造成誤動作。三、每個GPIO口都可以作為外部中斷的輸入,便于系統靈活設計。四、I/O口的輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz),這有利于噪聲控制。五、所有I/O口兼容CMOS和TTL,多數I/O口兼容5V電平。六、大電流驅動能力:GPIO口在高低電平分別為0.4V和VDD-0.4V時,可以提供或吸收8mA電流;如果把輸入輸出電平分別放寬到1.3V和VDD-1.3V時,可以提供或吸收20mA電流。七、具有獨立的喚醒I/O口。八、很多I/O口的復用功能可以重新映射,見:你知道嗎?STM32上很多管腳功能可以重新映射。九、GPIO口的配置具有上鎖功能,當配置好GPIO口后,可以通過程序鎖住配置組合,直到下次芯片復位才能解鎖。此功能非常有利于在程序跑飛的情況下保護系統中其他的設備,不會因為某些I/O口的配置被改變而損壞——如一個輸入口變成輸出口并輸出電流。十、輸出模式下輸入寄存器依然有效,在開漏配置模式下實現真正的雙向I/O功能。STM32內置參照電壓的使用每個STM32芯片都有一個內部的參照電壓,相當于一個標準電壓測量點,在芯片內部連接到ADC1的通道17。根據數據手冊中的數據,這個參照電壓的典型值是1.20V,最小值是1.16V,最大值是1.24V。這個電壓基本不隨外部供電電壓的變化而變化。不少人把這個參照電壓與ADC的參考電壓混淆。ADC的參考電壓都是通過Vref+提供的。100腳以上的型號,Vref+引到了片外,引腳名稱為Vref+;64腳和小于64腳的型號,Vref+在芯片內部與VCC信號線相連,沒有引到片外,這樣AD的參考電壓就是VCC上的電壓。在ADC的外部參考電壓波動,或因為Vref+在芯片內部與VCC相連而VCC變化的情況下,如果對于ADC測量的準確性要求不高時,可以使用這個內部參照電壓得到ADC測量的電壓值。具體方法是在測量某個通道的電壓值之前,先讀出參照電壓的ADC測量數值,記為ADrefint;再讀出要測量通道的ADC轉換數值,記為ADchx;則要測量的電壓為:Vchx = Vrefint * (ADchx/ADrefint)其中Vrefint為參照電壓=1.20V。上述方法在使用內置溫度傳感器對因為溫度變化,對系統參數進行補償時就十分有效。STM32的ADC輸入通道配置STM32中最多有3個ADC模塊,每個模塊對應的通道不完全重疊。下圖是STM32F103CDE數據手冊中的總框圖的左下角,圖中可以看出有8個外部ADC管腳分別接到了3個ADC模塊,有8個外部ADC管腳只分別接到了2個ADC模塊,還有5個外部ADC管腳只接到了ADC3模塊,這樣總共是21個通道。
2017-08-07 14:19:52

帶你走進STM32的世界

STM32F10xx時鐘系統框圖:時鐘是整個系統的脈搏下圖是STM32F10xx時鐘系統的框圖,通過這個圖可以一目了然地看到各個部件時鐘產生的路徑,還可以很方便地計算出各部分的時鐘頻率。STM32的四個時鐘源(HSI、HSE、LSI和LSE)也在圖中標出;圖中間的時鐘監視系統(CSS)是在很多ST7的單片機中就出現的安全設置。特別注意:圖的右邊,輸出定時器時鐘之前有一個乘法器,它的操作不是由程序控制的,是由硬件根據前一級的APB預分頻器的輸出自動選擇,當APB預分頻器的分頻因子為1時,這個乘法器無作用;當APB預分頻器的分頻因子大于1時,這個乘法器做倍頻操作,即將APB預分頻器輸出的頻率乘2,這樣可以保證定時器可以得到最高的72MHz時鐘脈沖。STM32上很多管腳功能可以重新映射STM32上有很多I/O口,也有很多的內置外設,為了節省引出管腳,這些內置外設都是與I/O口共用引出管腳,ST稱其為I/O管腳的復用功能,相信這點大家都很清楚,因為基本上所有單片機都是這么做的。但不知有多少人知道,很多復用功能的引出腳可以通過重映射,從不同的I/O管腳引出,即復用功能的引出腳位是可通過程序改變的。這一功能的直接好處是,PCB電路板的設計人員可以在需要的情況下,不必把某些信號在板上繞一大圈完成聯接,方便了PCB的設計同時潛在地減少了信號的交叉干擾。復用功能引出腳的重映射功能所帶來的潛在好處是,在你不需要同時使用多個復用功能時,虛擬地增加復用功能的數量。例如,STM32上最多有3個USART接口,當你需要更多UART接口而又不需要同時使用它們時,可以通過這個重映射功能實現更多的UART接口。下述復用功能的引出腳具有重映射功能:- 晶體振蕩器的引腳在不接晶體時,可以作為普通I/O口- CAN模塊- JTAG調試接口- 大部分定時器的引出接口- 大部分USART的引出接口- I2C1的引出接口- SPI1的引出接口詳細內容請看STM32的技術參考手冊。請務必記住:如果使用了任意一種重映射功能,在初始化和使用之前,一定要打開AFIO時鐘。下圖示出了部分復用功能引出腳的重映射結果:【演示實例】一個在EK-STM32F板子上的RTC作為calender的例子硬件連接:串口線連至板子的UART-0端口。超級終端設置為:Bits Per seconds: 115200Data bits: 8Parity: noneStop bits: 1Flow control Hardware板子第一次跑這個程序時,進入時間配置。根據超級終端上的提示,一次輸入年,月,日,時,分,秒(1月就輸入01,10月直接輸入10;同理3號就輸入03)隨后當前的時間就顯示到了超級終端上,并且每秒刷新。沒有斷電的情況下再跑這個程序,由于看到bake up區域有被設置過時間的標志,不再進入時間設置階段,而是直接到時間顯示間斷,在超級終端上,每秒刷新。當然如果在EK-STM32F板子上將Vbat和電池相接,具體就是:將紅色的電源跳線帽中的從下往上數的第5個取下,從原來的水平放置改成豎直放置(和上面的VBAT相連)。就算斷電,只要再上電,看到back up區域中的記號,一樣直接進入時間顯示。因為斷電后,back up區域由電池供電,其中記錄的記號不會由于系統掉電而消失。【演示實例】使用EK-STM32F板測量STM32的功耗這個例子演示了如何使用EK-STM32F開發評估板測量STM32F103VBT6在各種模式下的功耗。例子中演示了如何進入STM32的各種模式(RUN、SLEEP、STOP、STANDBY),使用這個例子您可以通過EK-STM32F板上的紅色跳線(VDD、VREF+和VDDA)測量功耗。本實例首先通過UART與Windows的Hyperterminal通信,用戶可以選擇需要進入的功耗模式,然后這個例程把用戶選好的配置存到后備寄存器,再次復位后STM32將進入之前選定的模式。附件包中包含了一個說明文件,詳細說明了如何設置板上的跳線和操作的過程。STM32 GPIO的十大優越功能綜述前幾天Hotpower邀請大家討論一下GPIO的功能、性能和優缺點(STM32的GPIO很強大~~~),等了幾天沒見太多人發言,但綜合來看提到了3點:1)真雙向IO,2)速度快,3)寄存器功能重復。關于第3點有說好,有說多余的,見仁見智。下面我就在做個拋磚引玉,根據ST手冊上的內容,簡單地綜述一下GPIO的功能:一、共有8種模式,可以通過編程選擇:1. 浮空輸入2. 帶上拉輸入3. 帶下拉輸入4. 模擬輸入5. 開漏輸出——(此模式可實現hotpower說的真雙向IO)6. 推挽輸出7. 復用功能的推挽輸出8. 復用功能的開漏輸出模式7和模式8需根據具體的復用功能決定。二、專門的寄存器(GPIOx_BSRR和GPIOx_BRR)實現對GPIO口的原子操作,即回避了設置或清除I/O端口時的“讀-修改-寫”操作,使得設置或清除I/O端口的操作不會被中斷處理打斷而造成誤動作。三、每個GPIO口都可以作為外部中斷的輸入,便于系統靈活設計。四、I/O口的輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz),這有利于噪聲控制。五、所有I/O口兼容CMOS和TTL,多數I/O口兼容5V電平。六、大電流驅動能力:GPIO口在高低電平分別為0.4V和VDD-0.4V時,可以提供或吸收8mA電流;如果把輸入輸出電平分別放寬到1.3V和VDD-1.3V時,可以提供或吸收20mA電流。七、具有獨立的喚醒I/O口。八、很多I/O口的復用功能可以重新映射,見:你知道嗎?STM32上很多管腳功能可以重新映射。九、GPIO口的配置具有上鎖功能,當配置好GPIO口后,可以通過程序鎖住配置組合,直到下次芯片復位才能解鎖。此功能非常有利于在程序跑飛的情況下保護系統中其他的設備,不會因為某些I/O口的配置被改變而損壞——如一個輸入口變成輸出口并輸出電流。十、輸出模式下輸入寄存器依然有效,在開漏配置模式下實現真正的雙向I/O功能。STM32內置參照電壓的使用每個STM32芯片都有一個內部的參照電壓,相當于一個標準電壓測量點,在芯片內部連接到ADC1的通道17。根據數據手冊中的數據,這個參照電壓的典型值是1.20V,最小值是1.16V,最大值是1.24V。這個電壓基本不隨外部供電電壓的變化而變化。不少人把這個參照電壓與ADC的參考電壓混淆。ADC的參考電壓都是通過Vref+提供的。100腳以上的型號,Vref+引到了片外,引腳名稱為Vref+;64腳和小于64腳的型號,Vref+在芯片內部與VCC信號線相連,沒有引到片外,這樣AD的參考電壓就是VCC上的電壓。在ADC的外部參考電壓波動,或因為Vref+在芯片內部與VCC相連而VCC變化的情況下,如果對于ADC測量的準確性要求不高時,可以使用這個內部參照電壓得到ADC測量的電壓值。具體方法是在測量某個通道的電壓值之前,先讀出參照電壓的ADC測量數值,記為ADrefint;再讀出要測量通道的ADC轉換數值,記為ADchx;則要測量的電壓為:Vchx = Vrefint * (ADchx/ADrefint)其中Vrefint為參照電壓=1.20V。上述方法在使用內置溫度傳感器對因為溫度變化,對系統參數進行補償時就十分有效。STM32的ADC輸入通道配置STM32中最多有3個ADC模塊,每個模塊對應的通道不完全重疊。下圖是STM32F103CDE數據手冊中的總框圖的左下角,圖中可以看出有8個外部ADC管腳分別接到了3個ADC模塊,有8個外部ADC管腳只分別接到了2個ADC模塊,還有5個外部ADC管腳只接到了ADC3模塊,這樣總共是21個通道。下表是這些ADC管腳與每個ADC模塊的對應關系,表中可以看出ADC1還有2個內部通道,分別接到內部的溫度傳感器和內部的參照電壓: 關于STM32 ADC速度的問題STM32F103xx系列稱為增強型產品,增強型產品的最高時鐘頻率可以達到72MHz。增強型產品的英文名稱為Performance Line。STM32F101xx系列稱為基本型產品,基本型產品的最高時鐘頻率可以達到36MHz。基本型產品的英文名稱為Access Line。根據設計,當ADC模塊的頻率為14MHz時,可以達到ADC的最快采樣轉換速度。要得到14MHz的ADC頻率,就要求SYSCLK的頻率是14MHz的倍數,即14MHz、28MHz、42MHz、56MHz、70MHz、84MHz等;對于基本型產品14MHz和28MHz處于它的最大允許頻率范圍內;對于增強型產品,14MHz、28MHz、42MHz、56MHz和70MHz幾種頻率都在它的最大允許頻率范圍內,但因為ADC預分頻器的分頻系數只有2、4、6、8這幾個,使用70MHz不能得到最大的14MHz,所以要想得到最快的ADC轉換速度,在增強型產品上能用的最快SYSCLK頻率是56MHz。ADC的速度由2個參數決定,它是采樣時間和轉換時間之和: 即:TCONV = 采樣時間 + 12.5個ADC時鐘周期在STM32中,ADC的采樣時間是由用戶程序在一組預定的數值中選擇,按照ADC的時鐘周期計算,共有8種選擇: 1.5、7.5、13.5、28.5、41.5、55.5、71.5和239.5按最小的1.5個時鐘周期的采樣時間計算,最短的TCONV等于14個時鐘周期,如果ADC的時鐘頻率是14MHz,則ADC的速度為每秒100萬次。注意:當ADC的時鐘頻率超過14MHz時,ADC的精度將會顯著下降。STM32內置CRC模塊的使用所有的STM32芯片都內置了一個硬件的CRC計算模塊,可以很方便地應用到需要進行通信的程序中,這個CRC計算模塊使用常見的、在以太網中使用的計算多項式:X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2 + X + 1寫成16進制就是:0x04C11DB7使用這個內置CRC模塊的方法非常簡單,既首先復位CRC模塊(設置CRC_CR=0x01),這個操作把CRC計算的余數初始化為0xFFFFFFFF;然后把要計算的數據按每32位分割為一組數據字,并逐個地把這組數據字寫入CRC_DR寄存器(既下圖中的綠色框),寫完所有的數據字后,就可以從CRC_DR寄存器(既下圖中的蘭色框)讀出計算的結果。注意:雖然讀寫操作都是針對CRC_DR寄存器,但實際上是訪問的不同物理寄存器。有幾點需要說明:1)上述算法中變量CRC,在每次循環結束包含了計算的余數,它始終是向左移位(既從最低位向最高位移動),溢出的數據位被丟棄。2)輸入的數據始終是以32位為單位,如果原始數據少于32位,需要在低位補0,當然也可以高位補0。3)假定輸入的DWORD數組中每個分量是按小端存儲。4)輸入數據是按照最高位最先計算,最低位最后計算的順序進行。例如:如果輸入0x44434241,內存中按字節存放的順序是:0x41, 0x42, 0x43, 0x44。計算的結果是:0xCF534AE1如果輸入0x41424344,內存中按字節存放的順序是:0x44, 0x43, 0x42, 0x41。計算的結果是:0xABCF9A63STM32中定時器的時鐘源STM32中有多達8個定時器,其中TIM1和TIM8是能夠產生三對PWM互補輸出的高級定時器,常用于三相電機的驅動,它們的時鐘由APB2的輸出產生。其它6個為普通定時器,時鐘由APB1的輸出產生。下圖是STM32參考手冊上時鐘分配圖中,有關定時器時鐘部分的截圖:從圖中可以看出,定時器的時鐘不是直接來自APB1或APB2,而是來自于輸入為APB1或APB2的一個倍頻器,圖中的藍色部分。下面以定時器2~7的時鐘說明這個倍頻器的作用:當APB1的預分頻系數為1時,這個倍頻器不起作用,定時器的時鐘頻率等于APB1的頻率;當APB1的預分頻系數為其它數值(即預分頻系數為2、4、8或16)時,這個倍頻器起作用,定時器的時鐘頻率等于APB1的頻率兩倍。假定AHB=36MHz,因為APB1允許的最大頻率為36MHz,所以APB1的預分頻系數可以取任意數值;當預分頻系數=1時,APB1=36MHz,TIM2~7的時鐘頻率=36MHz(倍頻器不起作用);當預分頻系數=2時,APB1=18MHz,在倍頻器的作用下,TIM2~7的時鐘頻率=36MHz。有人會問,既然需要TIM2~7的時鐘頻率=36MHz,為什么不直接取APB1的預分頻系數=1?答案是:APB1不但要為TIM2~7提供時鐘,而且還要為其它外設提供時鐘;設置這個倍頻器可以在保證其它外設使用較低時鐘頻率時,TIM2~7仍能得到較高的時鐘頻率。再舉個例子:當AHB=72MHz時,APB1的預分頻系數必須大于2,因為APB1的最大頻率只能為36MHz。如果APB1的預分頻系數=2,則因為這個倍頻器,TIM2~7仍然能夠得到72MHz的時鐘頻率。能夠使用更高的時鐘頻率,無疑提高了定時器的分辨率,這也正是設計這個倍頻器的初衷。STM32中外部中斷與外部事件這張圖是一條外部中斷線或外部事件線的示意圖,圖中信號線上劃有一條斜線,旁邊標志19字樣的注釋,表示這樣的線路共有19套。圖中的藍色虛線箭頭,標出了外部中斷信號的傳輸路徑,首先外部信號從編號1的芯片管腳進入,經過編號2的邊沿檢測電路,通過編號3的或門進入中斷“掛起請求寄存器”,最后經過編號4的與門輸出到NVIC中斷控制器;在這個通道上有4個控制選項,外部的信號首先經過邊沿檢測電路,這個邊沿檢測電路受上升沿或下降沿選擇寄存器控制,用戶可以使用這兩個寄存器控制需要哪一個邊沿產生中斷,因為選擇上升沿或下降沿是分別受2個平行的寄存器控制,所以用戶可以同時選擇上升沿或下降沿,而如果只有一個寄存器控制,那么只能選擇一個邊沿了。接下來是編號3的或門,這個或門的另一個輸入是“軟件中斷/事件寄存器”,從這里可以看出,軟件可以優先于外部信號請求一個中斷或事件,既當“軟件中斷/事件寄存器”的對應位為“1”時,不管外部信號如何,編號3的或門都會輸出有效信號。一個中斷或事件請求信號經過編號3的或門后,進入掛起請求寄存器,到此之前,中斷和事件的信號傳輸通路都是一致的,也就是說,掛起請求寄存器中記錄了外部信號的電平變化。外部請求信號最后經過編號4的與門,向NVIC中斷控制器發出一個中斷請求,如果中斷屏蔽寄存器的對應位為“0”,則該請求信號不能傳輸到與門的另一端,實現了中斷的屏蔽。明白了外部中斷的請求機制,就很容易理解事件的請求機制了。圖中紅色虛線箭頭,標出了外部事件信號的傳輸路徑,外部請求信號經過編號3的或門后,進入編號5的與門,這個與門的作用與編號4的與門類似,用于引入事件屏蔽寄存器的控制;最后脈沖發生器把一個跳變的信號轉變為一個單脈沖,輸出到芯片中的其它功能模塊。在這張圖上我們也可以知道,從外部激勵信號來看,中斷和事件是沒有分別的,只是在芯片內部分開,一路信號會向CPU產生中斷請求,另一路信號會向其它功能模塊發送脈沖觸發信號,其它功能模塊如何相應這個觸發信號,則由對應的模塊自己決定。在圖上部的APB總線和外設模塊接口,是每一個功能模塊都有的部分,CPU通過這樣的接口訪問各個功能模塊,這里就不再贅述了。STM32的USART發送數據時如何使用TXE和TC標志在USART的發送端有2個寄存器,一個是程序可以看到的USART_DR寄存器(下圖中陰影部分的TDR),另一個是程序看不到的移位寄存器(下圖中陰影部分Transmit Shift Register)。對應USART數據發送有兩個標志,一個是TXE=發送數據寄存器空,另一個是TC=發送結束;對照下圖,當TDR中的數據傳送到移位寄存器后,TXE被設置,此時移位寄存器開始向TX信號線按位傳輸數據,但因為TDR已經變空,程序可以把下一個要發送的字節(操作USART_DR)寫入TDR中,而不必等到移位寄存器中所有位發送結束,所有位發送結束時(送出停止位后)硬件會設置TC標志。另一方面,在剛剛初始化好USART還沒有發送任何數據時,也會有TXE標志,因為這時發送數據寄存器是空的。TXEIE和TCIE的意義很簡單,TXEIE允許在TXE標志為'1'時產生中斷,而TCIE允許在TC標志為'1'時產生中斷。至于什么時候使用哪個標志,需要根據你的需要自己決定。但我認為TXE允許程序有更充裕的時間填寫TDR寄存器,保證發送的數據流不間斷。TC可以讓程序知道發送結束的確切時間,有利于程序控制外部數據流的時序。STM32設置了很多非常有用和靈活的控制和狀態位,只要你很好地掌握了它們的用法,可以讓你的應用更加精確和高效。南寧STM32技術實訓提升QQ2532176025這是STM32技術參考手冊中的一頁:在STM32中如何配置片內外設使用的IO端口首先,一個外設經過配置輸入的時鐘和初始化后即被激活(開啟)。如果需要使用該外設的輸入輸出管腳,則需要配置相應的GPIO端口;否則該外設對應的輸入輸出管腳可以做普通GPIO管腳使用。
2016-09-14 10:58:12

帶你走進STM32的世界

STM32F10xx時鐘系統框圖:時鐘是整個系統的脈搏下圖是STM32F10xx時鐘系統的框圖,通過這個圖可以一目了然地看到各個部件時鐘產生的路徑,還可以很方便地計算出各部分的時鐘頻率。STM32的四個時鐘源(HSI、HSE、LSI和LSE)也在圖中標出;圖中間的時鐘監視系統(CSS)是在很多ST7的單片機中就出現的安全設置。特別注意:圖的右邊,輸出定時器時鐘之前有一個乘法器,它的操作不是由程序控制的,是由硬件根據前一級的APB預分頻器的輸出自動選擇,當APB預分頻器的分頻因子為1時,這個乘法器無作用;當APB預分頻器的分頻因子大于1時,這個乘法器做倍頻操作,即將APB預分頻器輸出的頻率乘2,這樣可以保證定時器可以得到最高的72MHz時鐘脈沖。STM32上很多管腳功能可以重新映射STM32上有很多I/O口,也有很多的內置外設,為了節省引出管腳,這些內置外設都是與I/O口共用引出管腳,ST稱其為I/O管腳的復用功能,相信這點大家都很清楚,因為基本上所有單片機都是這么做的。但不知有多少人知道,很多復用功能的引出腳可以通過重映射,從不同的I/O管腳引出,即復用功能的引出腳位是可通過程序改變的。這一功能的直接好處是,PCB電路板的設計人員可以在需要的情況下,不必把某些信號在板上繞一大圈完成聯接,方便了PCB的設計同時潛在地減少了信號的交叉干擾。復用功能引出腳的重映射功能所帶來的潛在好處是,在你不需要同時使用多個復用功能時,虛擬地增加復用功能的數量。例如,STM32上最多有3個USART接口,當你需要更多UART接口而又不需要同時使用它們時,可以通過這個重映射功能實現更多的UART接口。下述復用功能的引出腳具有重映射功能:- 晶體振蕩器的引腳在不接晶體時,可以作為普通I/O口- CAN模塊- JTAG調試接口- 大部分定時器的引出接口- 大部分USART的引出接口- I2C1的引出接口- SPI1的引出接口詳細內容請看STM32的技術參考手冊。請務必記住:如果使用了任意一種重映射功能,在初始化和使用之前,一定要打開AFIO時鐘。下圖示出了部分復用功能引出腳的重映射結果:【演示實例】一個在EK-STM32F板子上的RTC作為calender的例子硬件連接:串口線連至板子的UART-0端口。超級終端設置為:Bits Per seconds: 115200Data bits: 8Parity: noneStop bits: 1Flow control Hardware板子第一次跑這個程序時,進入時間配置。根據超級終端上的提示,一次輸入年,月,日,時,分,秒(1月就輸入01,10月直接輸入10;同理3號就輸入03)隨后當前的時間就顯示到了超級終端上,并且每秒刷新。沒有斷電的情況下再跑這個程序,由于看到bake up區域有被設置過時間的標志,不再進入時間設置階段,而是直接到時間顯示間斷,在超級終端上,每秒刷新。當然如果在EK-STM32F板子上將Vbat和電池相接,具體就是:將紅色的電源跳線帽中的從下往上數的第5個取下,從原來的水平放置改成豎直放置(和上面的VBAT相連)。就算斷電,只要再上電,看到back up區域中的記號,一樣直接進入時間顯示。因為斷電后,back up區域由電池供電,其中記錄的記號不會由于系統掉電而消失。【演示實例】使用EK-STM32F板測量STM32的功耗這個例子演示了如何使用EK-STM32F開發評估板測量STM32F103VBT6在各種模式下的功耗。例子中演示了如何進入STM32的各種模式(RUN、SLEEP、STOP、STANDBY),使用這個例子您可以通過EK-STM32F板上的紅色跳線(VDD、VREF+和VDDA)測量功耗。本實例首先通過UART與Windows的Hyperterminal通信,用戶可以選擇需要進入的功耗模式,然后這個例程把用戶選好的配置存到后備寄存器,再次復位后STM32將進入之前選定的模式。附件包中包含了一個說明文件,詳細說明了如何設置板上的跳線和操作的過程。STM32 GPIO的十大優越功能綜述前幾天Hotpower邀請大家討論一下GPIO的功能、性能和優缺點(STM32的GPIO很強大~~~),等了幾天沒見太多人發言,但綜合來看提到了3點:1)真雙向IO,2)速度快,3)寄存器功能重復。關于第3點有說好,有說多余的,見仁見智。下面我就在做個拋磚引玉,根據ST手冊上的內容,簡單地綜述一下GPIO的功能:一、共有8種模式,可以通過編程選擇:1. 浮空輸入2. 帶上拉輸入3. 帶下拉輸入4. 模擬輸入5. 開漏輸出——(此模式可實現hotpower說的真雙向IO)6. 推挽輸出7. 復用功能的推挽輸出8. 復用功能的開漏輸出模式7和模式8需根據具體的復用功能決定。二、專門的寄存器(GPIOx_BSRR和GPIOx_BRR)實現對GPIO口的原子操作,即回避了設置或清除I/O端口時的“讀-修改-寫”操作,使得設置或清除I/O端口的操作不會被中斷處理打斷而造成誤動作。三、每個GPIO口都可以作為外部中斷的輸入,便于系統靈活設計。四、I/O口的輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz),這有利于噪聲控制。五、所有I/O口兼容CMOS和TTL,多數I/O口兼容5V電平。六、大電流驅動能力:GPIO口在高低電平分別為0.4V和VDD-0.4V時,可以提供或吸收8mA電流;如果把輸入輸出電平分別放寬到1.3V和VDD-1.3V時,可以提供或吸收20mA電流。七、具有獨立的喚醒I/O口。八、很多I/O口的復用功能可以重新映射,見:你知道嗎?STM32上很多管腳功能可以重新映射。九、GPIO口的配置具有上鎖功能,當配置好GPIO口后,可以通過程序鎖住配置組合,直到下次芯片復位才能解鎖。此功能非常有利于在程序跑飛的情況下保護系統中其他的設備,不會因為某些I/O口的配置被改變而損壞——如一個輸入口變成輸出口并輸出電流。十、輸出模式下輸入寄存器依然有效,在開漏配置模式下實現真正的雙向I/O功能。STM32內置參照電壓的使用每個STM32芯片都有一個內部的參照電壓,相當于一個標準電壓測量點,在芯片內部連接到ADC1的通道17。根據數據手冊中的數據,這個參照電壓的典型值是1.20V,最小值是1.16V,最大值是1.24V。這個電壓基本不隨外部供電電壓的變化而變化。不少人把這個參照電壓與ADC的參考電壓混淆。ADC的參考電壓都是通過Vref+提供的。100腳以上的型號,Vref+引到了片外,引腳名稱為Vref+;64腳和小于64腳的型號,Vref+在芯片內部與VCC信號線相連,沒有引到片外,這樣AD的參考電壓就是VCC上的電壓。在ADC的外部參考電壓波動,或因為Vref+在芯片內部與VCC相連而VCC變化的情況下,如果對于ADC測量的準確性要求不高時,可以使用這個內部參照電壓得到ADC測量的電壓值。具體方法是在測量某個通道的電壓值之前,先讀出參照電壓的ADC測量數值,記為ADrefint;再讀出要測量通道的ADC轉換數值,記為ADchx;則要測量的電壓為:Vchx = Vrefint * (ADchx/ADrefint)其中Vrefint為參照電壓=1.20V。上述方法在使用內置溫度傳感器對因為溫度變化,對系統參數進行補償時就十分有效。STM32的ADC輸入通道配置STM32中最多有3個ADC模塊,每個模塊對應的通道不完全重疊。下圖是STM32F103CDE數據手冊中的總框圖的左下角,圖中可以看出有8個外部ADC管腳分別接到了3個ADC模塊,有8個外部ADC管腳只分別接到了2個ADC模塊,還有5個外部ADC管腳只接到了ADC3模塊,這樣總共是21個通道。下表是這些ADC管腳與每個ADC模塊的對應關系,表中可以看出ADC1還有2個內部通道,分別接到內部的溫度傳感器和內部的參照電壓: 關于STM32 ADC速度的問題STM32F103xx系列稱為增強型產品,增強型產品的最高時鐘頻率可以達到72MHz。增強型產品的英文名稱為Performance Line。STM32F101xx系列稱為基本型產品,基本型產品的最高時鐘頻率可以達到36MHz。基本型產品的英文名稱為Access Line。根據設計,當ADC模塊的頻率為14MHz時,可以達到ADC的最快采樣轉換速度。要得到14MHz的ADC頻率,就要求SYSCLK的頻率是14MHz的倍數,即14MHz、28MHz、42MHz、56MHz、70MHz、84MHz等;對于基本型產品14MHz和28MHz處于它的最大允許頻率范圍內;對于增強型產品,14MHz、28MHz、42MHz、56MHz和70MHz幾種頻率都在它的最大允許頻率范圍內,但因為ADC預分頻器的分頻系數只有2、4、6、8這幾個,使用70MHz不能得到最大的14MHz,所以要想得到最快的ADC轉換速度,在增強型產品上能用的最快SYSCLK頻率是56MHz。ADC的速度由2個參數決定,它是采樣時間和轉換時間之和: 即:TCONV = 采樣時間 + 12.5個ADC時鐘周期在STM32中,ADC的采樣時間是由用戶程序在一組預定的數值中選擇,按照ADC的時鐘周期計算,共有8種選擇:1.5、7.5、13.5、28.5、41.5、55.5、71.5和239.5按最小的1.5個時鐘周期的采樣時間計算,最短的TCONV等于14個時鐘周期,如果ADC的時鐘頻率是14MHz,則ADC的速度為每秒100萬次。注意:當ADC的時鐘頻率超過14MHz時,ADC的精度將會顯著下降。STM32內置CRC模塊的使用所有的STM32芯片都內置了一個硬件的CRC計算模塊,可以很方便地應用到需要進行通信的程序中,這個CRC計算模塊使用常見的、在以太網中使用的計算多項式:X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2 + X + 1寫成16進制就是:0x04C11DB7使用這個內置CRC模塊的方法非常簡單,既首先復位CRC模塊(設置CRC_CR=0x01),這個操作把CRC計算的余數初始化為0xFFFFFFFF;然后把要計算的數據按每32位分割為一組數據字,并逐個地把這組數據字寫入CRC_DR寄存器(既下圖中的綠色框),寫完所有的數據字后,就可以從CRC_DR寄存器(既下圖中的蘭色框)讀出計算的結果。注意:雖然讀寫操作都是針對CRC_DR寄存器,但實際上是訪問的不同物理寄存器。有幾點需要說明:1)上述算法中變量CRC,在每次循環結束包含了計算的余數,它始終是向左移位(既從最低位向最高位移動),溢出的數據位被丟棄。2)輸入的數據始終是以32位為單位,如果原始數據少于32位,需要在低位補0,當然也可以高位補0。3)假定輸入的DWORD數組中每個分量是按小端存儲。4)輸入數據是按照最高位最先計算,最低位最后計算的順序進行。例如:如果輸入0x44434241,內存中按字節存放的順序是:0x41, 0x42, 0x43, 0x44。計算的結果是:0xCF534AE1如果輸入0x41424344,內存中按字節存放的順序是:0x44, 0x43, 0x42, 0x41。計算的結果是:0xABCF9A63STM32中定時器的時鐘源STM32中有多達8個定時器,其中TIM1和TIM8是能夠產生三對PWM互補輸出的高級定時器,常用于三相電機的驅動,它們的時鐘由APB2的輸出產生。其它6個為普通定時器,時鐘由APB1的輸出產生。下圖是STM32參考手冊上時鐘分配圖中,有關定時器時鐘部分的截圖:從圖中可以看出,定時器的時鐘不是直接來自APB1或APB2,而是來自于輸入為APB1或APB2的一個倍頻器,圖中的藍色部分。下面以定時器2~7的時鐘說明這個倍頻器的作用:當APB1的預分頻系數為1時,這個倍頻器不起作用,定時器的時鐘頻率等于APB1的頻率;當APB1的預分頻系數為其它數值(即預分頻系數為2、4、8或16)時,這個倍頻器起作用,定時器的時鐘頻率等于APB1的頻率兩倍。假定AHB=36MHz,因為APB1允許的最大頻率為36MHz,所以APB1的預分頻系數可以取任意數值;當預分頻系數=1時,APB1=36MHz,TIM2~7的時鐘頻率=36MHz(倍頻器不起作用);當預分頻系數=2時,APB1=18MHz,在倍頻器的作用下,TIM2~7的時鐘頻率=36MHz。有人會問,既然需要TIM2~7的時鐘頻率=36MHz,為什么不直接取APB1的預分頻系數=1?答案是:APB1不但要為TIM2~7提供時鐘,而且還要為其它外設提供時鐘;設置這個倍頻器可以在保證其它外設使用較低時鐘頻率時,TIM2~7仍能得到較高的時鐘頻率。再舉個例子:當AHB=72MHz時,APB1的預分頻系數必須大于2,因為APB1的最大頻率只能為36MHz。如果APB1的預分頻系數=2,則因為這個倍頻器,TIM2~7仍然能夠得到72MHz的時鐘頻率。能夠使用更高的時鐘頻率,無疑提高了定時器的分辨率,這也正是設計這個倍頻器的初衷。STM32中外部中斷與外部事件這張圖是一條外部中斷線或外部事件線的示意圖,圖中信號線上劃有一條斜線,旁邊標志19字樣的注釋,表示這樣的線路共有19套。圖中的藍色虛線箭頭,標出了外部中斷信號的傳輸路徑,首先外部信號從編號1的芯片管腳進入,經過編號2的邊沿檢測電路,通過編號3的或門進入中斷“掛起請求寄存器”,最后經過編號4的與門輸出到NVIC中斷控制器;在這個通道上有4個控制選項,外部的信號首先經過邊沿檢測電路,這個邊沿檢測電路受上升沿或下降沿選擇寄存器控制,用戶可以使用這兩個寄存器控制需要哪一個邊沿產生中斷,因為選擇上升沿或下降沿是分別受2個平行的寄存器控制,所以用戶可以同時選擇上升沿或下降沿,而如果只有一個寄存器控制,那么只能選擇一個邊沿了。接下來是編號3的或門,這個或門的另一個輸入是“軟件中斷/事件寄存器”,從這里可以看出,軟件可以優先于外部信號請求一個中斷或事件,既當“軟件中斷/事件寄存器”的對應位為“1”時,不管外部信號如何,編號3的或門都會輸出有效信號。一個中斷或事件請求信號經過編號3的或門后,進入掛起請求寄存器,到此之前,中斷和事件的信號傳輸通路都是一致的,也就是說,掛起請求寄存器中記錄了外部信號的電平變化。外部請求信號最后經過編號4的與門,向NVIC中斷控制器發出一個中斷請求,如果中斷屏蔽寄存器的對應位為“0”,則該請求信號不能傳輸到與門的另一端,實現了中斷的屏蔽。明白了外部中斷的請求機制,就很容易理解事件的請求機制了。圖中紅色虛線箭頭,標出了外部事件信號的傳輸路徑,外部請求信號經過編號3的或門后,進入編號5的與門,這個與門的作用與編號4的與門類似,用于引入事件屏蔽寄存器的控制;最后脈沖發生器把一個跳變的信號轉變為一個單脈沖,輸出到芯片中的其它功能模塊。在這張圖上我們也可以知道,從外部激勵信號來看,中斷和事件是沒有分別的,只是在芯片內部分開,一路信號會向CPU產生中斷請求,另一路信號會向其它功能模塊發送脈沖觸發信號,其它功能模塊如何相應這個觸發信號,則由對應的模塊自己決定。在圖上部的APB總線和外設模塊接口,是每一個功能模塊都有的部分,CPU通過這樣的接口訪問各個功能模塊,這里就不再贅述了。STM32的USART發送數據時如何使用TXE和TC標志在USART的發送端有2個寄存器,一個是程序可以看到的USART_DR寄存器(下圖中陰影部分的TDR),另一個是程序看不到的移位寄存器(下圖中陰影部分Transmit Shift Register)。對應USART數據發送有兩個標志,一個是TXE=發送數據寄存器空,另一個是TC=發送結束;對照下圖,當TDR中的數據傳送到移位寄存器后,TXE被設置,此時移位寄存器開始向TX信號線按位傳輸數據,但因為TDR已經變空,程序可以把下一個要發送的字節(操作USART_DR)寫入TDR中,而不必等到移位寄存器中所有位發送結束,所有位發送結束時(送出停止位后)硬件會設置TC標志。另一方面,在剛剛初始化好USART還沒有發送任何數據時,也會有TXE標志,因為這時發送數據寄存器是空的。TXEIE和TCIE的意義很簡單,TXEIE允許在TXE標志為'1'時產生中斷,而TCIE允許在TC標志為'1'時產生中斷。至于什么時候使用哪個標志,需要根據你的需要自己決定。但我認為TXE允許程序有更充裕的時間填寫TDR寄存器,保證發送的數據流不間斷。TC可以讓程序知道發送結束的確切時間,有利于程序控制外部數據流的時序。STM32設置了很多非常有用和靈活的控制和狀態位,只要你很好地掌握了它們的用法,可以讓你的應用更加精確和高效。在STM32中如何配置片內外設使用的IO端口首先,一個外設經過配置輸入的時鐘和初始化后即被激活(開啟)。如果需要使用該外設的輸入輸出管腳,則需要配置相應的GPIO端口;否則該外設對應的輸入輸出管腳可以做普通GPIO管腳使用。
2017-10-07 11:44:54

帶你走進STM32的世界

STM32F10xx時鐘系統框圖:時鐘是整個系統的脈搏下圖是STM32F10xx時鐘系統的框圖,通過這個圖可以一目了然地看到各個部件時鐘產生的路徑,還可以很方便地計算出各部分的時鐘頻率。STM32的四個時鐘源(HSI、HSE、LSI和LSE)也在圖中標出;圖中間的時鐘監視系統(CSS)是在很多ST7的單片機中就出現的安全設置。特別注意:圖的右邊,輸出定時器時鐘之前有一個乘法器,它的操作不是由程序控制的,是由硬件根據前一級的APB預分頻器的輸出自動選擇,當APB預分頻器的分頻因子為1時,這個乘法器無作用;當APB預分頻器的分頻因子大于1時,這個乘法器做倍頻操作,即將APB預分頻器輸出的頻率乘2,這樣可以保證定時器可以得到最高的72MHz時鐘脈沖。STM32上很多管腳功能可以重新映射STM32上有很多I/O口,也有很多的內置外設,為了節省引出管腳,這些內置外設都是與I/O口共用引出管腳,ST稱其為I/O管腳的復用功能,相信這點大家都很清楚,因為基本上所有單片機都是這么做的。但不知有多少人知道,很多復用功能的引出腳可以通過重映射,從不同的I/O管腳引出,即復用功能的引出腳位是可通過程序改變的。這一功能的直接好處是,PCB電路板的設計人員可以在需要的情況下,不必把某些信號在板上繞一大圈完成聯接,方便了PCB的設計同時潛在地減少了信號的交叉干擾。復用功能引出腳的重映射功能所帶來的潛在好處是,在你不需要同時使用多個復用功能時,虛擬地增加復用功能的數量。例如,STM32上最多有3個USART接口,當你需要更多UART接口而又不需要同時使用它們時,可以通過這個重映射功能實現更多的UART接口。下述復用功能的引出腳具有重映射功能:- 晶體振蕩器的引腳在不接晶體時,可以作為普通I/O口- CAN模塊- JTAG調試接口- 大部分定時器的引出接口- 大部分USART的引出接口- I2C1的引出接口- SPI1的引出接口詳細內容請看STM32的技術參考手冊。請務必記住:如果使用了任意一種重映射功能,在初始化和使用之前,一定要打開AFIO時鐘。下圖示出了部分復用功能引出腳的重映射結果:【演示實例】一個在EK-STM32F板子上的RTC作為calender的例子硬件連接:串口線連至板子的UART-0端口。超級終端設置為:Bits Per seconds: 115200Data bits: 8Parity: noneStop bits: 1Flow control Hardware板子第一次跑這個程序時,進入時間配置。根據超級終端上的提示,一次輸入年,月,日,時,分,秒(1月就輸入01,10月直接輸入10;同理3號就輸入03)隨后當前的時間就顯示到了超級終端上,并且每秒刷新。沒有斷電的情況下再跑這個程序,由于看到bake up區域有被設置過時間的標志,不再進入時間設置階段,而是直接到時間顯示間斷,在超級終端上,每秒刷新。當然如果在EK-STM32F板子上將Vbat和電池相接,具體就是:將紅色的電源跳線帽中的從下往上數的第5個取下,從原來的水平放置改成豎直放置(和上面的VBAT相連)。就算斷電,只要再上電,看到back up區域中的記號,一樣直接進入時間顯示。因為斷電后,back up區域由電池供電,其中記錄的記號不會由于系統掉電而消失。【演示實例】使用EK-STM32F板測量STM32的功耗這個例子演示了如何使用EK-STM32F開發評估板測量STM32F103VBT6在各種模式下的功耗。例子中演示了如何進入STM32的各種模式(RUN、SLEEP、STOP、STANDBY),使用這個例子您可以通過EK-STM32F板上的紅色跳線(VDD、VREF+和VDDA)測量功耗。本實例首先通過UART與Windows的Hyperterminal通信,用戶可以選擇需要進入的功耗模式,然后這個例程把用戶選好的配置存到后備寄存器,再次復位后STM32將進入之前選定的模式。附件包中包含了一個說明文件,詳細說明了如何設置板上的跳線和操作的過程。STM32 GPIO的十大優越功能綜述前幾天Hotpower邀請大家討論一下GPIO的功能、性能和優缺點(STM32的GPIO很強大~~~),等了幾天沒見太多人發言,但綜合來看提到了3點:1)真雙向IO,2)速度快,3)寄存器功能重復。關于第3點有說好,有說多余的,見仁見智。下面我就在做個拋磚引玉,根據ST手冊上的內容,簡單地綜述一下GPIO的功能:一、共有8種模式,可以通過編程選擇:1. 浮空輸入2. 帶上拉輸入3. 帶下拉輸入4. 模擬輸入5. 開漏輸出——(此模式可實現hotpower說的真雙向IO)6. 推挽輸出7. 復用功能的推挽輸出8. 復用功能的開漏輸出模式7和模式8需根據具體的復用功能決定。二、專門的寄存器(GPIOx_BSRR和GPIOx_BRR)實現對GPIO口的原子操作,即回避了設置或清除I/O端口時的“讀-修改-寫”操作,使得設置或清除I/O端口的操作不會被中斷處理打斷而造成誤動作。三、每個GPIO口都可以作為外部中斷的輸入,便于系統靈活設計。四、I/O口的輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz),這有利于噪聲控制。五、所有I/O口兼容CMOS和TTL,多數I/O口兼容5V電平。六、大電流驅動能力:GPIO口在高低電平分別為0.4V和VDD-0.4V時,可以提供或吸收8mA電流;如果把輸入輸出電平分別放寬到1.3V和VDD-1.3V時,可以提供或吸收20mA電流。七、具有獨立的喚醒I/O口。八、很多I/O口的復用功能可以重新映射,見:你知道嗎?STM32上很多管腳功能可以重新映射。九、GPIO口的配置具有上鎖功能,當配置好GPIO口后,可以通過程序鎖住配置組合,直到下次芯片復位才能解鎖。此功能非常有利于在程序跑飛的情況下保護系統中其他的設備,不會因為某些I/O口的配置被改變而損壞——如一個輸入口變成輸出口并輸出電流。十、輸出模式下輸入寄存器依然有效,在開漏配置模式下實現真正的雙向I/O功能。STM32內置參照電壓的使用每個STM32芯片都有一個內部的參照電壓,相當于一個標準電壓測量點,在芯片內部連接到ADC1的通道17。根據數據手冊中的數據,這個參照電壓的典型值是1.20V,最小值是1.16V,最大值是1.24V。這個電壓基本不隨外部供電電壓的變化而變化。不少人把這個參照電壓與ADC的參考電壓混淆。ADC的參考電壓都是通過Vref+提供的。100腳以上的型號,Vref+引到了片外,引腳名稱為Vref+;64腳和小于64腳的型號,Vref+在芯片內部與VCC信號線相連,沒有引到片外,這樣AD的參考電壓就是VCC上的電壓。在ADC的外部參考電壓波動,或因為Vref+在芯片內部與VCC相連而VCC變化的情況下,如果對于ADC測量的準確性要求不高時,可以使用這個內部參照電壓得到ADC測量的電壓值。具體方法是在測量某個通道的電壓值之前,先讀出參照電壓的ADC測量數值,記為ADrefint;再讀出要測量通道的ADC轉換數值,記為ADchx;則要測量的電壓為:Vchx = Vrefint * (ADchx/ADrefint)其中Vrefint為參照電壓=1.20V。上述方法在使用內置溫度傳感器對因為溫度變化,對系統參數進行補償時就十分有效。STM32的ADC輸入通道配置STM32中最多有3個ADC模塊,每個模塊對應的通道不完全重疊。下圖是STM32F103CDE數據手冊中的總框圖的左下角,圖中可以看出有8個外部ADC管腳分別接到了3個ADC模塊,有8個外部ADC管腳只分別接到了2個ADC模塊,還有5個外部ADC管腳只接到了ADC3模塊,這樣總共是21個通道。下表是這些ADC管腳與每個ADC模塊的對應關系,表中可以看出ADC1還有2個內部通道,分別接到內部的溫度傳感器和內部的參照電壓: 關于STM32 ADC速度的問題STM32F103xx系列稱為增強型產品,增強型產品的最高時鐘頻率可以達到72MHz。增強型產品的英文名稱為Performance Line。STM32F101xx系列稱為基本型產品,基本型產品的最高時鐘頻率可以達到36MHz。基本型產品的英文名稱為Access Line。根據設計,當ADC模塊的頻率為14MHz時,可以達到ADC的最快采樣轉換速度。要得到14MHz的ADC頻率,就要求SYSCLK的頻率是14MHz的倍數,即14MHz、28MHz、42MHz、56MHz、70MHz、84MHz等;對于基本型產品14MHz和28MHz處于它的最大允許頻率范圍內;對于增強型產品,14MHz、28MHz、42MHz、56MHz和70MHz幾種頻率都在它的最大允許頻率范圍內,但因為ADC預分頻器的分頻系數只有2、4、6、8這幾個,使用70MHz不能得到最大的14MHz,所以要想得到最快的ADC轉換速度,在增強型產品上能用的最快SYSCLK頻率是56MHz。ADC的速度由2個參數決定,它是采樣時間和轉換時間之和: 即:TCONV = 采樣時間 + 12.5個ADC時鐘周期在STM32中,ADC的采樣時間是由用戶程序在一組預定的數值中選擇,按照ADC的時鐘周期計算,共有8種選擇:1.5、7.5、13.5、28.5、41.5、55.5、71.5和239.5按最小的1.5個時鐘周期的采樣時間計算,最短的TCONV等于14個時鐘周期,如果ADC的時鐘頻率是14MHz,則ADC的速度為每秒100萬次。注意:當ADC的時鐘頻率超過14MHz時,ADC的精度將會顯著下降。STM32內置CRC模塊的使用所有的STM32芯片都內置了一個硬件的CRC計算模塊,可以很方便地應用到需要進行通信的程序中,這個CRC計算模塊使用常見的、在以太網中使用的計算多項式:X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2 + X + 1寫成16進制就是:0x04C11DB7使用這個內置CRC模塊的方法非常簡單,既首先復位CRC模塊(設置CRC_CR=0x01),這個操作把CRC計算的余數初始化為0xFFFFFFFF;然后把要計算的數據按每32位分割為一組數據字,并逐個地把這組數據字寫入CRC_DR寄存器(既下圖中的綠色框),寫完所有的數據字后,就可以從CRC_DR寄存器(既下圖中的蘭色框)讀出計算的結果。注意:雖然讀寫操作都是針對CRC_DR寄存器,但實際上是訪問的不同物理寄存器。有幾點需要說明:1)上述算法中變量CRC,在每次循環結束包含了計算的余數,它始終是向左移位(既從最低位向最高位移動),溢出的數據位被丟棄。2)輸入的數據始終是以32位為單位,如果原始數據少于32位,需要在低位補0,當然也可以高位補0。3)假定輸入的DWORD數組中每個分量是按小端存儲。4)輸入數據是按照最高位最先計算,最低位最后計算的順序進行。例如:如果輸入0x44434241,內存中按字節存放的順序是:0x41, 0x42, 0x43, 0x44。計算的結果是:0xCF534AE1如果輸入0x41424344,內存中按字節存放的順序是:0x44, 0x43, 0x42, 0x41。計算的結果是:0xABCF9A63STM32中定時器的時鐘源STM32中有多達8個定時器,其中TIM1和TIM8是能夠產生三對PWM互補輸出的高級定時器,常用于三相電機的驅動,它們的時鐘由APB2的輸出產生。其它6個為普通定時器,時鐘由APB1的輸出產生。下圖是STM32參考手冊上時鐘分配圖中,有關定時器時鐘部分的截圖:從圖中可以看出,定時器的時鐘不是直接來自APB1或APB2,而是來自于輸入為APB1或APB2的一個倍頻器,圖中的藍色部分。下面以定時器2~7的時鐘說明這個倍頻器的作用:當APB1的預分頻系數為1時,這個倍頻器不起作用,定時器的時鐘頻率等于APB1的頻率;當APB1的預分頻系數為其它數值(即預分頻系數為2、4、8或16)時,這個倍頻器起作用,定時器的時鐘頻率等于APB1的頻率兩倍。假定AHB=36MHz,因為APB1允許的最大頻率為36MHz,所以APB1的預分頻系數可以取任意數值;當預分頻系數=1時,APB1=36MHz,TIM2~7的時鐘頻率=36MHz(倍頻器不起作用);當預分頻系數=2時,APB1=18MHz,在倍頻器的作用下,TIM2~7的時鐘頻率=36MHz。有人會問,既然需要TIM2~7的時鐘頻率=36MHz,為什么不直接取APB1的預分頻系數=1?答案是:APB1不但要為TIM2~7提供時鐘,而且還要為其它外設提供時鐘;設置這個倍頻器可以在保證其它外設使用較低時鐘頻率時,TIM2~7仍能得到較高的時鐘頻率。再舉個例子:當AHB=72MHz時,APB1的預分頻系數必須大于2,因為APB1的最大頻率只能為36MHz。如果APB1的預分頻系數=2,則因為這個倍頻器,TIM2~7仍然能夠得到72MHz的時鐘頻率。能夠使用更高的時鐘頻率,無疑提高了定時器的分辨率,這也正是設計這個倍頻器的初衷。STM32中外部中斷與外部事件這張圖是一條外部中斷線或外部事件線的示意圖,圖中信號線上劃有一條斜線,旁邊標志19字樣的注釋,表示這樣的線路共有19套。圖中的藍色虛線箭頭,標出了外部中斷信號的傳輸路徑,首先外部信號從編號1的芯片管腳進入,經過編號2的邊沿檢測電路,通過編號3的或門進入中斷“掛起請求寄存器”,最后經過編號4的與門輸出到NVIC中斷控制器;在這個通道上有4個控制選項,外部的信號首先經過邊沿檢測電路,這個邊沿檢測電路受上升沿或下降沿選擇寄存器控制,用戶可以使用這兩個寄存器控制需要哪一個邊沿產生中斷,因為選擇上升沿或下降沿是分別受2個平行的寄存器控制,所以用戶可以同時選擇上升沿或下降沿,而如果只有一個寄存器控制,那么只能選擇一個邊沿了。接下來是編號3的或門,這個或門的另一個輸入是“軟件中斷/事件寄存器”,從這里可以看出,軟件可以優先于外部信號請求一個中斷或事件,既當“軟件中斷/事件寄存器”的對應位為“1”時,不管外部信號如何,編號3的或門都會輸出有效信號。一個中斷或事件請求信號經過編號3的或門后,進入掛起請求寄存器,到此之前,中斷和事件的信號傳輸通路都是一致的,也就是說,掛起請求寄存器中記錄了外部信號的電平變化。外部請求信號最后經過編號4的與門,向NVIC中斷控制器發出一個中斷請求,如果中斷屏蔽寄存器的對應位為“0”,則該請求信號不能傳輸到與門的另一端,實現了中斷的屏蔽。明白了外部中斷的請求機制,就很容易理解事件的請求機制了。圖中紅色虛線箭頭,標出了外部事件信號的傳輸路徑,外部請求信號經過編號3的或門后,進入編號5的與門,這個與門的作用與編號4的與門類似,用于引入事件屏蔽寄存器的控制;最后脈沖發生器把一個跳變的信號轉變為一個單脈沖,輸出到芯片中的其它功能模塊。在這張圖上我們也可以知道,從外部激勵信號來看,中斷和事件是沒有分別的,只是在芯片內部分開,一路信號會向CPU產生中斷請求,另一路信號會向其它功能模塊發送脈沖觸發信號,其它功能模塊如何相應這個觸發信號,則由對應的模塊自己決定。在圖上部的APB總線和外設模塊接口,是每一個功能模塊都有的部分,CPU通過這樣的接口訪問各個功能模塊,這里就不再贅述了。STM32的USART發送數據時如何使用TXE和TC標志在USART的發送端有2個寄存器,一個是程序可以看到的USART_DR寄存器(下圖中陰影部分的TDR),另一個是程序看不到的移位寄存器(下圖中陰影部分Transmit Shift Register)。對應USART數據發送有兩個標志,一個是TXE=發送數據寄存器空,另一個是TC=發送結束;對照下圖,當TDR中的數據傳送到移位寄存器后,TXE被設置,此時移位寄存器開始向TX信號線按位傳輸數據,但因為TDR已經變空,程序可以把下一個要發送的字節(操作USART_DR)寫入TDR中,而不必等到移位寄存器中所有位發送結束,所有位發送結束時(送出停止位后)硬件會設置TC標志。另一方面,在剛剛初始化好USART還沒有發送任何數據時,也會有TXE標志,因為這時發送數據寄存器是空的。TXEIE和TCIE的意義很簡單,TXEIE允許在TXE標志為'1'時產生中斷,而TCIE允許在TC標志為'1'時產生中斷。至于什么時候使用哪個標志,需要根據你的需要自己決定。但我認為TXE允許程序有更充裕的時間填寫TDR寄存器,保證發送的數據流不間斷。TC可以讓程序知道發送結束的確切時間,有利于程序控制外部數據流的時序。STM32設置了很多非常有用和靈活的控制和狀態位,只要你很好地掌握了它們的用法,可以讓你的應用更加精確和高效。在STM32中如何配置片內外設使用的IO端口首先,一個外設經過配置輸入的時鐘和初始化后即被激活(開啟)。如果需要使用該外設的輸入輸出管腳,則需要配置相應的GPIO端口;否則該外設對應的輸入輸出管腳可以做普通GPIO管腳使用。
2017-10-11 09:30:36

帶你走進STM32的世界

STM32F10xx時鐘系統框圖:時鐘是整個系統的脈搏下圖是STM32F10xx時鐘系統的框圖,通過這個圖可以一目了然地看到各個部件時鐘產生的路徑,還可以很方便地計算出各部分的時鐘頻率。STM32的四個時鐘源(HSI、HSE、LSI和LSE)也在圖中標出;圖中間的時鐘監視系統(CSS)是在很多ST7的單片機中就出現的安全設置。特別注意:圖的右邊,輸出定時器時鐘之前有一個乘法器,它的操作不是由程序控制的,是由硬件根據前一級的APB預分頻器的輸出自動選擇,當APB預分頻器的分頻因子為1時,這個乘法器無作用;當APB預分頻器的分頻因子大于1時,這個乘法器做倍頻操作,即將APB預分頻器輸出的頻率乘2,這樣可以保證定時器可以得到最高的72MHz時鐘脈沖。STM32上很多管腳功能可以重新映射STM32上有很多I/O口,也有很多的內置外設,為了節省引出管腳,這些內置外設都是與I/O口共用引出管腳,ST稱其為I/O管腳的復用功能,相信這點大家都很清楚,因為基本上所有單片機都是這么做的。但不知有多少人知道,很多復用功能的引出腳可以通過重映射,從不同的I/O管腳引出,即復用功能的引出腳位是可通過程序改變的。這一功能的直接好處是,PCB電路板的設計人員可以在需要的情況下,不必把某些信號在板上繞一大圈完成聯接,方便了PCB的設計同時潛在地減少了信號的交叉干擾。復用功能引出腳的重映射功能所帶來的潛在好處是,在你不需要同時使用多個復用功能時,虛擬地增加復用功能的數量。例如,STM32上最多有3個USART接口,當你需要更多UART接口而又不需要同時使用它們時,可以通過這個重映射功能實現更多的UART接口。下述復用功能的引出腳具有重映射功能:- 晶體振蕩器的引腳在不接晶體時,可以作為普通I/O口- CAN模塊- JTAG調試接口- 大部分定時器的引出接口- 大部分USART的引出接口- I2C1的引出接口- SPI1的引出接口詳細內容請看STM32的技術參考手冊。請務必記住:如果使用了任意一種重映射功能,在初始化和使用之前,一定要打開AFIO時鐘。下圖示出了部分復用功能引出腳的重映射結果:【演示實例】一個在EK-STM32F板子上的RTC作為calender的例子硬件連接:串口線連至板子的UART-0端口。超級終端設置為:Bits Per seconds: 115200Data bits: 8Parity: noneStop bits: 1Flow control Hardware板子第一次跑這個程序時,進入時間配置。根據超級終端上的提示,一次輸入年,月,日,時,分,秒(1月就輸入01,10月直接輸入10;同理3號就輸入03)隨后當前的時間就顯示到了超級終端上,并且每秒刷新。沒有斷電的情況下再跑這個程序,由于看到bake up區域有被設置過時間的標志,不再進入時間設置階段,而是直接到時間顯示間斷,在超級終端上,每秒刷新。當然如果在EK-STM32F板子上將Vbat和電池相接,具體就是:將紅色的電源跳線帽中的從下往上數的第5個取下,從原來的水平放置改成豎直放置(和上面的VBAT相連)。就算斷電,只要再上電,看到back up區域中的記號,一樣直接進入時間顯示。因為斷電后,back up區域由電池供電,其中記錄的記號不會由于系統掉電而消失。【演示實例】使用EK-STM32F板測量STM32的功耗這個例子演示了如何使用EK-STM32F開發評估板測量STM32F103VBT6在各種模式下的功耗。例子中演示了如何進入STM32的各種模式(RUN、SLEEP、STOP、STANDBY),使用這個例子您可以通過EK-STM32F板上的紅色跳線(VDD、VREF+和VDDA)測量功耗。本實例首先通過UART與Windows的Hyperterminal通信,用戶可以選擇需要進入的功耗模式,然后這個例程把用戶選好的配置存到后備寄存器,再次復位后STM32將進入之前選定的模式。附件包中包含了一個說明文件,詳細說明了如何設置板上的跳線和操作的過程。STM32 GPIO的十大優越功能綜述前幾天Hotpower邀請大家討論一下GPIO的功能、性能和優缺點(STM32的GPIO很強大~~~),等了幾天沒見太多人發言,但綜合來看提到了3點:1)真雙向IO,2)速度快,3)寄存器功能重復。關于第3點有說好,有說多余的,見仁見智。下面我就在做個拋磚引玉,根據ST手冊上的內容,簡單地綜述一下GPIO的功能:一、共有8種模式,可以通過編程選擇:1. 浮空輸入2. 帶上拉輸入3. 帶下拉輸入4. 模擬輸入5. 開漏輸出——(此模式可實現hotpower說的真雙向IO)6. 推挽輸出7. 復用功能的推挽輸出8. 復用功能的開漏輸出模式7和模式8需根據具體的復用功能決定。二、專門的寄存器(GPIOx_BSRR和GPIOx_BRR)實現對GPIO口的原子操作,即回避了設置或清除I/O端口時的“讀-修改-寫”操作,使得設置或清除I/O端口的操作不會被中斷處理打斷而造成誤動作。三、每個GPIO口都可以作為外部中斷的輸入,便于系統靈活設計。四、I/O口的輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz),這有利于噪聲控制。五、所有I/O口兼容CMOS和TTL,多數I/O口兼容5V電平。六、大電流驅動能力:GPIO口在高低電平分別為0.4V和VDD-0.4V時,可以提供或吸收8mA電流;如果把輸入輸出電平分別放寬到1.3V和VDD-1.3V時,可以提供或吸收20mA電流。七、具有獨立的喚醒I/O口。八、很多I/O口的復用功能可以重新映射,見:你知道嗎?STM32上很多管腳功能可以重新映射。九、GPIO口的配置具有上鎖功能,當配置好GPIO口后,可以通過程序鎖住配置組合,直到下次芯片復位才能解鎖。此功能非常有利于在程序跑飛的情況下保護系統中其他的設備,不會因為某些I/O口的配置被改變而損壞——如一個輸入口變成輸出口并輸出電流。十、輸出模式下輸入寄存器依然有效,在開漏配置模式下實現真正的雙向I/O功能。STM32內置參照電壓的使用每個STM32芯片都有一個內部的參照電壓,相當于一個標準電壓測量點,在芯片內部連接到ADC1的通道17。根據數據手冊中的數據,這個參照電壓的典型值是1.20V,最小值是1.16V,最大值是1.24V。這個電壓基本不隨外部供電電壓的變化而變化。不少人把這個參照電壓與ADC的參考電壓混淆。ADC的參考電壓都是通過Vref+提供的。100腳以上的型號,Vref+引到了片外,引腳名稱為Vref+;64腳和小于64腳的型號,Vref+在芯片內部與VCC信號線相連,沒有引到片外,這樣AD的參考電壓就是VCC上的電壓。在ADC的外部參考電壓波動,或因為Vref+在芯片內部與VCC相連而VCC變化的情況下,如果對于ADC測量的準確性要求不高時,可以使用這個內部參照電壓得到ADC測量的電壓值。具體方法是在測量某個通道的電壓值之前,先讀出參照電壓的ADC測量數值,記為ADrefint;再讀出要測量通道的ADC轉換數值,記為ADchx;則要測量的電壓為:Vchx = Vrefint * (ADchx/ADrefint)其中Vrefint為參照電壓=1.20V。上述方法在使用內置溫度傳感器對因為溫度變化,對系統參數進行補償時就十分有效。STM32的ADC輸入通道配置STM32中最多有3個ADC模塊,每個模塊對應的通道不完全重疊。下圖是STM32F103CDE數據手冊中的總框圖的左下角,圖中可以看出有8個外部ADC管腳分別接到了3個ADC模塊,有8個外部ADC管腳只分別接到了2個ADC模塊,還有5個外部ADC管腳只接到了ADC3模塊,這樣總共是21個通道。下表是這些ADC管腳與每個ADC模塊的對應關系,表中可以看出ADC1還有2個內部通道,分別接到內部的溫度傳感器和內部的參照電壓: 關于STM32 ADC速度的問題STM32F103xx系列稱為增強型產品,增強型產品的最高時鐘頻率可以達到72MHz。增強型產品的英文名稱為Performance Line。STM32F101xx系列稱為基本型產品,基本型產品的最高時鐘頻率可以達到36MHz。基本型產品的英文名稱為Access Line。根據設計,當ADC模塊的頻率為14MHz時,可以達到ADC的最快采樣轉換速度。要得到14MHz的ADC頻率,就要求SYSCLK的頻率是14MHz的倍數,即14MHz、28MHz、42MHz、56MHz、70MHz、84MHz等;對于基本型產品14MHz和28MHz處于它的最大允許頻率范圍內;對于增強型產品,14MHz、28MHz、42MHz、56MHz和70MHz幾種頻率都在它的最大允許頻率范圍內,但因為ADC預分頻器的分頻系數只有2、4、6、8這幾個,使用70MHz不能得到最大的14MHz,所以要想得到最快的ADC轉換速度,在增強型產品上能用的最快SYSCLK頻率是56MHz。ADC的速度由2個參數決定,它是采樣時間和轉換時間之和: 即:TCONV = 采樣時間 + 12.5個ADC時鐘周期在STM32中,ADC的采樣時間是由用戶程序在一組預定的數值中選擇,按照ADC的時鐘周期計算,共有8種選擇:1.5、7.5、13.5、28.5、41.5、55.5、71.5和239.5按最小的1.5個時鐘周期的采樣時間計算,最短的TCONV等于14個時鐘周期,如果ADC的時鐘頻率是14MHz,則ADC的速度為每秒100萬次。注意:當ADC的時鐘頻率超過14MHz時,ADC的精度將會顯著下降。STM32內置CRC模塊的使用所有的STM32芯片都內置了一個硬件的CRC計算模塊,可以很方便地應用到需要進行通信的程序中,這個CRC計算模塊使用常見的、在以太網中使用的計算多項式:X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2 + X + 1寫成16進制就是:0x04C11DB7使用這個內置CRC模塊的方法非常簡單,既首先復位CRC模塊(設置CRC_CR=0x01),這個操作把CRC計算的余數初始化為0xFFFFFFFF;然后把要計算的數據按每32位分割為一組數據字,并逐個地把這組數據字寫入CRC_DR寄存器(既下圖中的綠色框),寫完所有的數據字后,就可以從CRC_DR寄存器(既下圖中的蘭色框)讀出計算的結果。注意:雖然讀寫操作都是針對CRC_DR寄存器,但實際上是訪問的不同物理寄存器。有幾點需要說明:1)上述算法中變量CRC,在每次循環結束包含了計算的余數,它始終是向左移位(既從最低位向最高位移動),溢出的數據位被丟棄。2)輸入的數據始終是以32位為單位,如果原始數據少于32位,需要在低位補0,當然也可以高位補0。3)假定輸入的DWORD數組中每個分量是按小端存儲。4)輸入數據是按照最高位最先計算,最低位最后計算的順序進行。例如:如果輸入0x44434241,內存中按字節存放的順序是:0x41, 0x42, 0x43, 0x44。計算的結果是:0xCF534AE1如果輸入0x41424344,內存中按字節存放的順序是:0x44, 0x43, 0x42, 0x41。計算的結果是:0xABCF9A63STM32中定時器的時鐘源STM32中有多達8個定時器,其中TIM1和TIM8是能夠產生三對PWM互補輸出的高級定時器,常用于三相電機的驅動,它們的時鐘由APB2的輸出產生。其它6個為普通定時器,時鐘由APB1的輸出產生。下圖是STM32參考手冊上時鐘分配圖中,有關定時器時鐘部分的截圖:從圖中可以看出,定時器的時鐘不是直接來自APB1或APB2,而是來自于輸入為APB1或APB2的一個倍頻器,圖中的藍色部分。下面以定時器2~7的時鐘說明這個倍頻器的作用:當APB1的預分頻系數為1時,這個倍頻器不起作用,定時器的時鐘頻率等于APB1的頻率;當APB1的預分頻系數為其它數值(即預分頻系數為2、4、8或16)時,這個倍頻器起作用,定時器的時鐘頻率等于APB1的頻率兩倍。假定AHB=36MHz,因為APB1允許的最大頻率為36MHz,所以APB1的預分頻系數可以取任意數值;當預分頻系數=1時,APB1=36MHz,TIM2~7的時鐘頻率=36MHz(倍頻器不起作用);當預分頻系數=2時,APB1=18MHz,在倍頻器的作用下,TIM2~7的時鐘頻率=36MHz。有人會問,既然需要TIM2~7的時鐘頻率=36MHz,為什么不直接取APB1的預分頻系數=1?答案是:APB1不但要為TIM2~7提供時鐘,而且還要為其它外設提供時鐘;設置這個倍頻器可以在保證其它外設使用較低時鐘頻率時,TIM2~7仍能得到較高的時鐘頻率。再舉個例子:當AHB=72MHz時,APB1的預分頻系數必須大于2,因為APB1的最大頻率只能為36MHz。如果APB1的預分頻系數=2,則因為這個倍頻器,TIM2~7仍然能夠得到72MHz的時鐘頻率。能夠使用更高的時鐘頻率,無疑提高了定時器的分辨率,這也正是設計這個倍頻器的初衷。STM32中外部中斷與外部事件這張圖是一條外部中斷線或外部事件線的示意圖,圖中信號線上劃有一條斜線,旁邊標志19字樣的注釋,表示這樣的線路共有19套。圖中的藍色虛線箭頭,標出了外部中斷信號的傳輸路徑,首先外部信號從編號1的芯片管腳進入,經過編號2的邊沿檢測電路,通過編號3的或門進入中斷“掛起請求寄存器”,最后經過編號4的與門輸出到NVIC中斷控制器;在這個通道上有4個控制選項,外部的信號首先經過邊沿檢測電路,這個邊沿檢測電路受上升沿或下降沿選擇寄存器控制,用戶可以使用這兩個寄存器控制需要哪一個邊沿產生中斷,因為選擇上升沿或下降沿是分別受2個平行的寄存器控制,所以用戶可以同時選擇上升沿或下降沿,而如果只有一個寄存器控制,那么只能選擇一個邊沿了。接下來是編號3的或門,這個或門的另一個輸入是“軟件中斷/事件寄存器”,從這里可以看出,軟件可以優先于外部信號請求一個中斷或事件,既當“軟件中斷/事件寄存器”的對應位為“1”時,不管外部信號如何,編號3的或門都會輸出有效信號。一個中斷或事件請求信號經過編號3的或門后,進入掛起請求寄存器,到此之前,中斷和事件的信號傳輸通路都是一致的,也就是說,掛起請求寄存器中記錄了外部信號的電平變化。外部請求信號最后經過編號4的與門,向NVIC中斷控制器發出一個中斷請求,如果中斷屏蔽寄存器的對應位為“0”,則該請求信號不能傳輸到與門的另一端,實現了中斷的屏蔽。明白了外部中斷的請求機制,就很容易理解事件的請求機制了。圖中紅色虛線箭頭,標出了外部事件信號的傳輸路徑,外部請求信號經過編號3的或門后,進入編號5的與門,這個與門的作用與編號4的與門類似,用于引入事件屏蔽寄存器的控制;最后脈沖發生器把一個跳變的信號轉變為一個單脈沖,輸出到芯片中的其它功能模塊。在這張圖上我們也可以知道,從外部激勵信號來看,中斷和事件是沒有分別的,只是在芯片內部分開,一路信號會向CPU產生中斷請求,另一路信號會向其它功能模塊發送脈沖觸發信號,其它功能模塊如何相應這個觸發信號,則由對應的模塊自己決定。在圖上部的APB總線和外設模塊接口,是每一個功能模塊都有的部分,CPU通過這樣的接口訪問各個功能模塊,這里就不再贅述了。STM32的USART發送數據時如何使用TXE和TC標志在USART的發送端有2個寄存器,一個是程序可以看到的USART_DR寄存器(下圖中陰影部分的TDR),另一個是程序看不到的移位寄存器(下圖中陰影部分Transmit Shift Register)。對應USART數據發送有兩個標志,一個是TXE=發送數據寄存器空,另一個是TC=發送結束;對照下圖,當TDR中的數據傳送到移位寄存器后,TXE被設置,此時移位寄存器開始向TX信號線按位傳輸數據,但因為TDR已經變空,程序可以把下一個要發送的字節(操作USART_DR)寫入TDR中,而不必等到移位寄存器中所有位發送結束,所有位發送結束時(送出停止位后)硬件會設置TC標志。另一方面,在剛剛初始化好USART還沒有發送任何數據時,也會有TXE標志,因為這時發送數據寄存器是空的。TXEIE和TCIE的意義很簡單,TXEIE允許在TXE標志為'1'時產生中斷,而TCIE允許在TC標志為'1'時產生中斷。至于什么時候使用哪個標志,需要根據你的需要自己決定。但我認為TXE允許程序有更充裕的時間填寫TDR寄存器,保證發送的數據流不間斷。TC可以讓程序知道發送結束的確切時間,有利于程序控制外部數據流的時序。STM32設置了很多非常有用和靈活的控制和狀態位,只要你很好地掌握了它們的用法,可以讓你的應用更加精確和高效。在STM32中如何配置片內外設使用的IO端口首先,一個外設經過配置輸入的時鐘和初始化后即被激活(開啟)。如果需要使用該外設的輸入輸出管腳,則需要配置相應的GPIO端口;否則該外設對應的輸入輸出管腳可以做普通GPIO管腳使用。
2016-09-21 09:43:16

帶你走進STM32的世界

STM32F10xx時鐘系統框圖:時鐘是整個系統的脈搏下圖是STM32F10xx時鐘系統的框圖,通過這個圖可以一目了然地看到各個部件時鐘產生的路徑,還可以很方便地計算出各部分的時鐘頻率。STM32的四個時鐘源(HSI、HSE、LSI和LSE)也在圖中標出;圖中間的時鐘監視系統(CSS)是在很多ST7的單片機中就出現的安全設置。特別注意:圖的右邊,輸出定時器時鐘之前有一個乘法器,它的操作不是由程序控制的,是由硬件根據前一級的APB預分頻器的輸出自動選擇,當APB預分頻器的分頻因子為1時,這個乘法器無作用;當APB預分頻器的分頻因子大于1時,這個乘法器做倍頻操作,即將APB預分頻器輸出的頻率乘2,這樣可以保證定時器可以得到最高的72MHz時鐘脈沖。STM32上很多管腳功能可以重新映射STM32上有很多I/O口,也有很多的內置外設,為了節省引出管腳,這些內置外設都是與I/O口共用引出管腳,ST稱其為I/O管腳的復用功能,相信這點大家都很清楚,因為基本上所有單片機都是這么做的。但不知有多少人知道,很多復用功能的引出腳可以通過重映射,從不同的I/O管腳引出,即復用功能的引出腳位是可通過程序改變的。這一功能的直接好處是,PCB電路板的設計人員可以在需要的情況下,不必把某些信號在板上繞一大圈完成聯接,方便了PCB的設計同時潛在地減少了信號的交叉干擾。復用功能引出腳的重映射功能所帶來的潛在好處是,在你不需要同時使用多個復用功能時,虛擬地增加復用功能的數量。例如,STM32上最多有3個USART接口,當你需要更多UART接口而又不需要同時使用它們時,可以通過這個重映射功能實現更多的UART接口。下述復用功能的引出腳具有重映射功能:- 晶體振蕩器的引腳在不接晶體時,可以作為普通I/O口- CAN模塊- JTAG調試接口- 大部分定時器的引出接口- 大部分USART的引出接口- I2C1的引出接口- SPI1的引出接口詳細內容請看STM32的技術參考手冊。請務必記住:如果使用了任意一種重映射功能,在初始化和使用之前,一定要打開AFIO時鐘。下圖示出了部分復用功能引出腳的重映射結果:【演示實例】一個在EK-STM32F板子上的RTC作為calender的例子硬件連接:串口線連至板子的UART-0端口。超級終端設置為:Bits Per seconds: 115200Data bits: 8Parity: noneStop bits: 1Flow control Hardware板子第一次跑這個程序時,進入時間配置。根據超級終端上的提示,一次輸入年,月,日,時,分,秒(1月就輸入01,10月直接輸入10;同理3號就輸入03)隨后當前的時間就顯示到了超級終端上,并且每秒刷新。沒有斷電的情況下再跑這個程序,由于看到bake up區域有被設置過時間的標志,不再進入時間設置階段,而是直接到時間顯示間斷,在超級終端上,每秒刷新。當然如果在EK-STM32F板子上將Vbat和電池相接,具體就是:將紅色的電源跳線帽中的從下往上數的第5個取下,從原來的水平放置改成豎直放置(和上面的VBAT相連)。就算斷電,只要再上電,看到back up區域中的記號,一樣直接進入時間顯示。因為斷電后,back up區域由電池供電,其中記錄的記號不會由于系統掉電而消失。【演示實例】使用EK-STM32F板測量STM32的功耗這個例子演示了如何使用EK-STM32F開發評估板測量STM32F103VBT6在各種模式下的功耗。例子中演示了如何進入STM32的各種模式(RUN、SLEEP、STOP、STANDBY),使用這個例子您可以通過EK-STM32F板上的紅色跳線(VDD、VREF+和VDDA)測量功耗。本實例首先通過UART與Windows的Hyperterminal通信,用戶可以選擇需要進入的功耗模式,然后這個例程把用戶選好的配置存到后備寄存器,再次復位后STM32將進入之前選定的模式。附件包中包含了一個說明文件,詳細說明了如何設置板上的跳線和操作的過程。STM32 GPIO的十大優越功能綜述前幾天Hotpower邀請大家討論一下GPIO的功能、性能和優缺點(STM32的GPIO很強大~~~),等了幾天沒見太多人發言,但綜合來看提到了3點:1)真雙向IO,2)速度快,3)寄存器功能重復。關于第3點有說好,有說多余的,見仁見智。下面我就在做個拋磚引玉,根據ST手冊上的內容,簡單地綜述一下GPIO的功能:一、共有8種模式,可以通過編程選擇:1. 浮空輸入2. 帶上拉輸入3. 帶下拉輸入4. 模擬輸入5. 開漏輸出——(此模式可實現hotpower說的真雙向IO)6. 推挽輸出7. 復用功能的推挽輸出8. 復用功能的開漏輸出模式7和模式8需根據具體的復用功能決定。二、專門的寄存器(GPIOx_BSRR和GPIOx_BRR)實現對GPIO口的原子操作,即回避了設置或清除I/O端口時的“讀-修改-寫”操作,使得設置或清除I/O端口的操作不會被中斷處理打斷而造成誤動作。三、每個GPIO口都可以作為外部中斷的輸入,便于系統靈活設計。四、I/O口的輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz),這有利于噪聲控制。五、所有I/O口兼容CMOS和TTL,多數I/O口兼容5V電平。六、大電流驅動能力:GPIO口在高低電平分別為0.4V和VDD-0.4V時,可以提供或吸收8mA電流;如果把輸入輸出電平分別放寬到1.3V和VDD-1.3V時,可以提供或吸收20mA電流。七、具有獨立的喚醒I/O口。八、很多I/O口的復用功能可以重新映射,見:你知道嗎?STM32上很多管腳功能可以重新映射。九、GPIO口的配置具有上鎖功能,當配置好GPIO口后,可以通過程序鎖住配置組合,直到下次芯片復位才能解鎖。此功能非常有利于在程序跑飛的情況下保護系統中其他的設備,不會因為某些I/O口的配置被改變而損壞——如一個輸入口變成輸出口并輸出電流。十、輸出模式下輸入寄存器依然有效,在開漏配置模式下實現真正的雙向I/O功能。STM32內置參照電壓的使用每個STM32芯片都有一個內部的參照電壓,相當于一個標準電壓測量點,在芯片內部連接到ADC1的通道17。根據數據手冊中的數據,這個參照電壓的典型值是1.20V,最小值是1.16V,最大值是1.24V。這個電壓基本不隨外部供電電壓的變化而變化。不少人把這個參照電壓與ADC的參考電壓混淆。ADC的參考電壓都是通過Vref+提供的。100腳以上的型號,Vref+引到了片外,引腳名稱為Vref+;64腳和小于64腳的型號,Vref+在芯片內部與VCC信號線相連,沒有引到片外,這樣AD的參考電壓就是VCC上的電壓。在ADC的外部參考電壓波動,或因為Vref+在芯片內部與VCC相連而VCC變化的情況下,如果對于ADC測量的準確性要求不高時,可以使用這個內部參照電壓得到ADC測量的電壓值。具體方法是在測量某個通道的電壓值之前,先讀出參照電壓的ADC測量數值,記為ADrefint;再讀出要測量通道的ADC轉換數值,記為ADchx;則要測量的電壓為:Vchx = Vrefint * (ADchx/ADrefint)其中Vrefint為參照電壓=1.20V。上述方法在使用內置溫度傳感器對因為溫度變化,對系統參數進行補償時就十分有效。STM32的ADC輸入通道配置STM32中最多有3個ADC模塊,每個模塊對應的通道不完全重疊。下圖是STM32F103CDE數據手冊中的總框圖的左下角,圖中可以看出有8個外部ADC管腳分別接到了3個ADC模塊,有8個外部ADC管腳只分別接到了2個ADC模塊,還有5個外部ADC管腳只接到了ADC3模塊,這樣總共是21個通道。下表是這些ADC管腳與每個ADC模塊的對應關系,表中可以看出ADC1還有2個內部通道,分別接到內部的溫度傳感器和內部的參照電壓: 關于STM32 ADC速度的問題STM32F103xx系列稱為增強型產品,增強型產品的最高時鐘頻率可以達到72MHz。增強型產品的英文名稱為Performance Line。STM32F101xx系列稱為基本型產品,基本型產品的最高時鐘頻率可以達到36MHz。基本型產品的英文名稱為Access Line。根據設計,當ADC模塊的頻率為14MHz時,可以達到ADC的最快采樣轉換速度。要得到14MHz的ADC頻率,就要求SYSCLK的頻率是14MHz的倍數,即14MHz、28MHz、42MHz、56MHz、70MHz、84MHz等;對于基本型產品14MHz和28MHz處于它的最大允許頻率范圍內;對于增強型產品,14MHz、28MHz、42MHz、56MHz和70MHz幾種頻率都在它的最大允許頻率范圍內,但因為ADC預分頻器的分頻系數只有2、4、6、8這幾個,使用70MHz不能得到最大的14MHz,所以要想得到最快的ADC轉換速度,在增強型產品上能用的最快SYSCLK頻率是56MHz。ADC的速度由2個參數決定,它是采樣時間和轉換時間之和: 即:TCONV = 采樣時間 + 12.5個ADC時鐘周期在STM32中,ADC的采樣時間是由用戶程序在一組預定的數值中選擇,按照ADC的時鐘周期計算,共有8種選擇:1.5、7.5、13.5、28.5、41.5、55.5、71.5和239.5按最小的1.5個時鐘周期的采樣時間計算,最短的TCONV等于14個時鐘周期,如果ADC的時鐘頻率是14MHz,則ADC的速度為每秒100萬次。注意:當ADC的時鐘頻率超過14MHz時,ADC的精度將會顯著下降。STM32內置CRC模塊的使用所有的STM32芯片都內置了一個硬件的CRC計算模塊,可以很方便地應用到需要進行通信的程序中,這個CRC計算模塊使用常見的、在以太網中使用的計算多項式:X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2 + X + 1寫成16進制就是:0x04C11DB7使用這個內置CRC模塊的方法非常簡單,既首先復位CRC模塊(設置CRC_CR=0x01),這個操作把CRC計算的余數初始化為0xFFFFFFFF;然后把要計算的數據按每32位分割為一組數據字,并逐個地把這組數據字寫入CRC_DR寄存器(既下圖中的綠色框),寫完所有的數據字后,就可以從CRC_DR寄存器(既下圖中的蘭色框)讀出計算的結果。注意:雖然讀寫操作都是針對CRC_DR寄存器,但實際上是訪問的不同物理寄存器。有幾點需要說明:1)上述算法中變量CRC,在每次循環結束包含了計算的余數,它始終是向左移位(既從最低位向最高位移動),溢出的數據位被丟棄。2)輸入的數據始終是以32位為單位,如果原始數據少于32位,需要在低位補0,當然也可以高位補0。3)假定輸入的DWORD數組中每個分量是按小端存儲。4)輸入數據是按照最高位最先計算,最低位最后計算的順序進行。例如:如果輸入0x44434241,內存中按字節存放的順序是:0x41, 0x42, 0x43, 0x44。計算的結果是:0xCF534AE1如果輸入0x41424344,內存中按字節存放的順序是:0x44, 0x43, 0x42, 0x41。計算的結果是:0xABCF9A63STM32中定時器的時鐘源STM32中有多達8個定時器,其中TIM1和TIM8是能夠產生三對PWM互補輸出的高級定時器,常用于三相電機的驅動,它們的時鐘由APB2的輸出產生。其它6個為普通定時器,時鐘由APB1的輸出產生。下圖是STM32參考手冊上時鐘分配圖中,有關定時器時鐘部分的截圖:從圖中可以看出,定時器的時鐘不是直接來自APB1或APB2,而是來自于輸入為APB1或APB2的一個倍頻器,圖中的藍色部分。下面以定時器2~7的時鐘說明這個倍頻器的作用:當APB1的預分頻系數為1時,這個倍頻器不起作用,定時器的時鐘頻率等于APB1的頻率;當APB1的預分頻系數為其它數值(即預分頻系數為2、4、8或16)時,這個倍頻器起作用,定時器的時鐘頻率等于APB1的頻率兩倍。假定AHB=36MHz,因為APB1允許的最大頻率為36MHz,所以APB1的預分頻系數可以取任意數值;當預分頻系數=1時,APB1=36MHz,TIM2~7的時鐘頻率=36MHz(倍頻器不起作用);當預分頻系數=2時,APB1=18MHz,在倍頻器的作用下,TIM2~7的時鐘頻率=36MHz。有人會問,既然需要TIM2~7的時鐘頻率=36MHz,為什么不直接取APB1的預分頻系數=1?答案是:APB1不但要為TIM2~7提供時鐘,而且還要為其它外設提供時鐘;設置這個倍頻器可以在保證其它外設使用較低時鐘頻率時,TIM2~7仍能得到較高的時鐘頻率。再舉個例子:當AHB=72MHz時,APB1的預分頻系數必須大于2,因為APB1的最大頻率只能為36MHz。如果APB1的預分頻系數=2,則因為這個倍頻器,TIM2~7仍然能夠得到72MHz的時鐘頻率。能夠使用更高的時鐘頻率,無疑提高了定時器的分辨率,這也正是設計這個倍頻器的初衷。STM32中外部中斷與外部事件這張圖是一條外部中斷線或外部事件線的示意圖,圖中信號線上劃有一條斜線,旁邊標志19字樣的注釋,表示這樣的線路共有19套。圖中的藍色虛線箭頭,標出了外部中斷信號的傳輸路徑,首先外部信號從編號1的芯片管腳進入,經過編號2的邊沿檢測電路,通過編號3的或門進入中斷“掛起請求寄存器”,最后經過編號4的與門輸出到NVIC中斷控制器;在這個通道上有4個控制選項,外部的信號首先經過邊沿檢測電路,這個邊沿檢測電路受上升沿或下降沿選擇寄存器控制,用戶可以使用這兩個寄存器控制需要哪一個邊沿產生中斷,因為選擇上升沿或下降沿是分別受2個平行的寄存器控制,所以用戶可以同時選擇上升沿或下降沿,而如果只有一個寄存器控制,那么只能選擇一個邊沿了。接下來是編號3的或門,這個或門的另一個輸入是“軟件中斷/事件寄存器”,從這里可以看出,軟件可以優先于外部信號請求一個中斷或事件,既當“軟件中斷/事件寄存器”的對應位為“1”時,不管外部信號如何,編號3的或門都會輸出有效信號。一個中斷或事件請求信號經過編號3的或門后,進入掛起請求寄存器,到此之前,中斷和事件的信號傳輸通路都是一致的,也就是說,掛起請求寄存器中記錄了外部信號的電平變化。外部請求信號最后經過編號4的與門,向NVIC中斷控制器發出一個中斷請求,如果中斷屏蔽寄存器的對應位為“0”,則該請求信號不能傳輸到與門的另一端,實現了中斷的屏蔽。明白了外部中斷的請求機制,就很容易理解事件的請求機制了。圖中紅色虛線箭頭,標出了外部事件信號的傳輸路徑,外部請求信號經過編號3的或門后,進入編號5的與門,這個與門的作用與編號4的與門類似,用于引入事件屏蔽寄存器的控制;最后脈沖發生器把一個跳變的信號轉變為一個單脈沖,輸出到芯片中的其它功能模塊。在這張圖上我們也可以知道,從外部激勵信號來看,中斷和事件是沒有分別的,只是在芯片內部分開,一路信號會向CPU產生中斷請求,另一路信號會向其它功能模塊發送脈沖觸發信號,其它功能模塊如何相應這個觸發信號,則由對應的模塊自己決定。在圖上部的APB總線和外設模塊接口,是每一個功能模塊都有的部分,CPU通過這樣的接口訪問各個功能模塊,這里就不再贅述了。STM32的USART發送數據時如何使用TXE和TC標志在USART的發送端有2個寄存器,一個是程序可以看到的USART_DR寄存器(下圖中陰影部分的TDR),另一個是程序看不到的移位寄存器(下圖中陰影部分Transmit Shift Register)。對應USART數據發送有兩個標志,一個是TXE=發送數據寄存器空,另一個是TC=發送結束;對照下圖,當TDR中的數據傳送到移位寄存器后,TXE被設置,此時移位寄存器開始向TX信號線按位傳輸數據,但因為TDR已經變空,程序可以把下一個要發送的字節(操作USART_DR)寫入TDR中,而不必等到移位寄存器中所有位發送結束,所有位發送結束時(送出停止位后)硬件會設置TC標志。另一方面,在剛剛初始化好USART還沒有發送任何數據時,也會有TXE標志,因為這時發送數據寄存器是空的。TXEIE和TCIE的意義很簡單,TXEIE允許在TXE標志為'1'時產生中斷,而TCIE允許在TC標志為'1'時產生中斷。至于什么時候使用哪個標志,需要根據你的需要自己決定。但我認為TXE允許程序有更充裕的時間填寫TDR寄存器,保證發送的數據流不間斷。TC可以讓程序知道發送結束的確切時間,有利于程序控制外部數據流的時序。STM32設置了很多非常有用和靈活的控制和狀態位,只要你很好地掌握了它們的用法,可以讓你的應用更加精確和高效。在STM32中如何配置片內外設使用的IO端口首先,一個外設經過配置輸入的時鐘和初始化后即被激活(開啟)。如果需要使用該外設的輸入輸出管腳,則需要配置相應的GPIO端口;否則該外設對應的輸入輸出管腳可以做普通GPIO管腳使用。
2017-10-25 10:04:38

帶你走進STM32的世界

帶你走進STM32的世界STM32F10xx時鐘系統框圖:時鐘是整個系統的脈搏下圖是STM32F10xx時鐘系統的框圖,通過這個圖可以一目了然地看到各個部件時鐘產生的路徑,還可以很方便地計算出各部分
2017-11-05 11:29:45

帶你走進單片機程序設計大門

帶你走進單片機程序設計大門。
2012-08-04 11:34:54

帶大家走進嵌入式Linux-arm驅動開發

一、本文將會以最簡單的LED驅動程序帶大家走進嵌入式Linux-arm驅動開發,首先,來了解一下最簡單的驅動框架。1.首先struct file_operations led_fops()函數,它是
2021-12-15 07:59:57

怎么才能防止系統受干擾而使程序丟失,或者走進死循還而使系統死機?

AT89C52的主要性能參數有哪些怎么才能防止系統受干擾而使程序丟失,或者走進死循還而使系統死機?
2021-04-14 07:03:12

數字世界里的模擬技術看完你就懂了

數字世界里的模擬技術看完你就懂了
2021-04-22 06:10:03

新手教程書籍《從零開始走進FPGA世界

;三、高速的圖像和視頻處理,因為FPGA內部嵌入了大量的乘法器或者DSPBlock,所以在這些領域應用頗廣,此外各大FPGA公司也提供了相應的參考設計;四、大型LED面板驅動和高分辨率LCD驅動;四、協
2018-12-14 17:47:38

無線多彩LED照明控制方案

智能照明時代降臨 無線多彩LED照明控制方案橫空出世:本方案是大聯大集團在LED智能家居照明領域的研發成果之一。通過該方案,您的LED產品就可以告別開關、遙控器的桎梏,邁入智能照明的產品的行列。詳細方案及技術參數請到大聯大云端wpgcloud了解>>>
2013-11-01 10:09:28

智能家居控制系統如何走進生活?

  智能家居控制系統如何走進生活?對于未來的住宅,你有怎樣的期待?隨著科技的發展,智能家居離我們越來越近。想象一下,在未來的住宅中,輕輕一點,家里的環境模式就能隨意切換。如晨起、離家、就餐、會客
2018-05-02 11:47:38

智能照明光照你我他,關愛每一個家

在都市里 ,到處炫耀著五顏的智能燈光照明系統色彩,這是一個五彩斑斕的世界,下面小編就帶你走進智能家居系統中的姹紫嫣紅在室內,智能燈光照明系統慢慢已經走進人們的生活,讓室內變得五彩斑斕,暖意濃濃。在
2016-05-16 16:31:37

未來世界如何供電

未來世界如何供電:無線傳輸或成主流
2021-01-07 06:56:18

格林代爾多彩竹木纖維多姿色彩

格林代爾多彩竹木纖維異型產品暢銷全國,格林代爾集成墻飾,格林代爾集成墻,主蕭亞軒與男友調情用于作為室內裝飾,是建筑裝潢首要選擇產品,格林代爾集成墻飾,以全國為主章子怡集齊12個影后服務地區,客戶
2016-03-28 16:35:48

求大牛DIY一個世界地圖形狀LED點陣(4米寬,2000點)

`有個展廳項目需要做一個世界地圖形狀的展品,整體形狀是由2000根亞克力管構成的一幅4米寬世界地圖,每根亞克力管的截面構成地圖的一個像素點,亞克力管頂部封裝不同的種子,底部安裝LED燈珠以照亮頂部
2018-01-18 17:09:09

電子單片機教案 循環漸進走進電子世界

電子單片機教案 循環漸進走進電子世界
2013-07-28 12:41:24

要過年啦,小編這里給大家拜個早年!

` 小編這里給位英雄“猴”杰,綠林“猴”士,“猴”門貴胄拜年啦,在這空前絕猴”的 花“猴”月圓之夜,小編有很多的”猴”情壯志 ,“猴”言壯語溢于言表,2015年大家在論壇的猴”謀善斷,讓論壇增添多彩
2016-01-29 10:12:53

迷失的arm世界。。

接觸電子的東西已經快一年了,但是就是感覺很無助,單片機會點51,自學了些模電數電,其他什么的也了解了一點,現在我想自學arm,但是又不知道現在夠格學了沒,so,真心希望你能給小弟指點一下怎樣走進arm。。
2013-06-11 16:48:05

多彩305攝像頭驅動下載

多彩305攝像頭驅動下載
2008-01-11 22:55:595

LED顯示精彩世界

LED顯示精彩世界,LED顯示屏在各大人流場所隨處可見.為人們的眼界開拓了新的空間.
2021-11-22 09:26:58

啟動數碼能量,豐富多彩生活

             啟動數碼能量,豐富多彩生活
2009-01-15 12:39:13358

走進比亞迪

走進比亞迪  比亞迪股份有限公司始建于1995年,由 20 多人的規模起步,短短十年時間內迅速成長為 IT 及電子零部件的世界
2009-10-27 11:43:01429

走進雙鹿電池

走進雙鹿電池 中銀(寧波)電池有限
2009-10-28 14:56:591121

多彩節能的夏日平板挑選法則

多彩節能的夏日平板挑選法則 前言: 09平板市場三軍鼎立,以三星、索尼為代表的合資品牌從背光源著力,主推LED電視;而部分國
2010-02-11 11:56:20356

目前世界上最大的led顯示屏在哪里

目前世界上最大的led顯示屏在哪里
2010-03-10 10:56:565686

我國LED專利僅占世界的十分之一

我國LED專利僅占世界的十分之一   如今,中國已經成為世界上重要的中低端LED封裝生產基地,預計2010年中國LED產業將達到1000億元
2010-03-23 09:02:59568

車用LED頭燈組研發介紹

隨著半導體材料的突破與白光發光二極體的問世,被譽為照亮未來技術的LED(發光二極體)漸漸走進了我們的日常生活當中,并帶領我們迎向固態照明世界。因此白光LED是固態照明中一
2011-04-14 15:06:1036

LED驅動——點亮世界

一直以來驅動電路是LED應用產品的重要組成部分,如何設計一個優秀的LED驅動電路也是困擾著工程師的難題之一。本專題從LED原理出發,分析LED驅動設計所要注意的問題。LED驅動解決方案難點在于:電流
2012-03-14 16:30:38

世界主要LED生產廠家介紹

世界主要LED生產廠家介紹:日亞化工是GaN系的開拓者,在LED和激光領域居世界首位。豐田合成提出了車體和輪胎的概念。
2012-03-29 10:05:567289

LED的應用設計

隨著LED技術的不斷成熟,LED的成本和價格降了下來,加之政府對新能源的大力支持,使得LED在各個行業的使用越來越廣泛,LED開始走進我們的日常生活!本專題主要從LED應用介紹、LED照明應用、LED驅動設計應用、LED應用電路圖和LED顯示設計應用五個方面來介紹LED的應用設計!
2012-08-01 15:21:37

圖說LED基礎小常識(一)

今天,LED已經走進千家萬戶,成為我們生活中常見的一項技術。在可見光LED問世50周年之際,讓我們一起回顧LED的發展,認識LED的類型,以及你將可以怎樣利用LED技術。
2012-11-13 17:17:368343

LED照明應對世界末日

日前關于世界末日的傳聞常見報端,人們對謠言的辨別能力真是令人揪心,本文從科學角度分析即使連黑三天,有了LED照明又有何懼,LED燈應用于各個領域,給人帶來光明。
2012-12-07 09:50:28839

Kick:可由WiFi控制的多彩LED

今天推薦個更給力的Kick——能夠用智能手機通過WiFi進行控制的可調色LED燈。通過iPhone上的應用程序,用戶就能夠遠程調節任何想要的彩虹色。
2013-05-31 11:25:032832

[1.1.1]--走進世界

電子技術電工技術
jf_75936199發布于 2023-03-11 01:40:28

走進2016“多彩”的LED世界:百家爭鳴,精彩紛呈

過去一年,我們曾經為LED照明需求不斷攀升而雀躍,為LED產品單價大幅下滑而訝異,為硅襯底技術自主化而歡呼……這些復雜表情背后,實際上反映的是LED產業大幅發展過程中所遭遇的不確定性,這種不確定性也是勃勃生機的表現。
2016-02-16 11:15:481080

Delphi教程_多彩的數據報表

Delphi教程多彩的數據報表,很好的Delphi的學習資料。
2016-03-16 14:55:524

吹逼技術只服華為,華為P10真機圖曝光,死磕三星S8!配隱藏式指紋+多彩金屬機身!

華為P10在顏值方面主打多彩配色,會有淡綠,騷紫,海藍等顏色,滿足年輕人的不同需求,而湊巧的是,三星S8也會主打多彩機身,顯示出科技和時尚活力相結合。
2017-02-17 09:28:21473

還記得那些年的華碩筆記本電腦嗎?讓我們一起走進華碩筆記本世界吧!

在過去的華碩筆記本電腦世界你對這些又有哪些了解呢?和小編一起走進華碩筆記版電腦世界去了解它吸引人的一面吧!
2017-03-24 09:40:031943

索尼4K液晶電視X9300E 帶你走進炫彩世界

大千世界風光無限好,當你沒有時間去旅游,沒有時間去欣賞外界美麗風景的時候,那就讓索尼4K液晶電視帶你去游覽世界,帶你走進大千世界,帶你享受生活的樂趣。
2017-07-07 10:00:031122

LED屏顯世界專訪】封裝小尺寸化是趨勢,但更應關注可靠性(一)

LED顯屏世界專題報道
2017-08-30 11:22:081331

英特爾將繼續致力于自動駕駛領域的技術創新,推動自動駕駛走進真實世界

不論是和華納兄弟的合作,還是對Mobileye的收購,都體現了英特爾在自動駕駛行業的野心和堅定。未來,英特爾將繼續致力于自動駕駛領域的技術創新,推動自動駕駛走進真實世界
2018-01-03 17:27:462946

飛利浦幻彩LED冰酒燈 給你最浪漫的氛圍

浪漫的飲酒環境需要多彩的氛圍,飛利浦幻彩 LED 冰酒燈就用多彩LED 芯片為用戶打造舒適的環境。這款冰酒燈的外觀設計簡約時尚,透明的主體搭配銀色邊框簡約時尚,內置的多光色 LED 芯片可以為用戶打造時尚溫馨的飲酒環境,無線充電方式也可以帶來時尚的使用體驗。
2018-04-27 04:30:004699

巨頭力推LED大屏,LED屏幕是否能走進影院?

看大片無放映機?在三星、索尼都在力推LED大屏,尤其是三星已在上海建立LED屏幕影院后,業界開始對LED屏進入電影院市場有所遐想和期待,未來LED屏幕是否會成為電影屏幕的新標準?
2018-09-13 15:06:039370

羽博猴年限量版移動電源評測 可以說是羽博移動產品的一項代表作

此時移動電源發揮最大作用的時刻到了,一路上的充電需求,全由它來保證。SO,今天,評測室為大家帶來了一款“限量版”移動電源——羽博P10000猴年日歷粉色版。
2018-10-23 10:03:421605

LED多彩燈旋轉燈的程序和原理圖資料免費下載

多彩燈旋轉燈,此燈由多塊副板組成旋轉,可產生旋轉,流水,漸變色,混色,交叉旋轉異色,雙燈同亮不同速旋轉,聲控,無聲自變色,無聲滅燈,有聲換色,有聲旋轉色換色。
2018-10-29 08:00:0033

LED多彩聲控旋轉燈的詳細資料合集免費下載

本文檔的主要內容詳細介紹的是LED多彩聲控旋轉燈的詳細資料合集免費下載主要內容包括了:電路原理圖,三維組裝PCB,三維組裝圖片,視頻效果
2018-10-30 08:00:0031

帶你走進手機的集成電路世界

住在海底世界中心的是CPU家族,他們是整個動物世界的最強大腦。起初CPU家族只有1個兄弟,但隨著功能需求越來越多,發展到現在有的CPU家族已經有8個兄弟啦!
2018-12-07 16:14:487649

嵌入式ARM與MMU神秘的內部世界!一目了然

帶你走進嵌入式ARM與MMU神秘的內部世界
2019-03-01 15:02:328942

神奇的微納米機器人走進人體

機器人界的老頑童福田敏男教授多次出席中國機器人峰會,在去年的峰會上,他帶來了更新穎更具創新的研究報告,帶領我們走進了一個神奇的微型生物細胞機器人世界
2019-03-20 15:38:087891

科大訊飛用AI為世界留下多彩鄉音

在剛剛更新的第二集《我用AI修文物 人工智能復活千年歷史》中,令人震驚的是聯合國教科文組織發布:在世界范圍內,每兩周就有一種語言從地球上消失。
2019-10-08 11:14:532560

多彩貴州航空正式引進了一架A320neo飛機

多彩貴州航空公司引進的第一架A320neo飛機是空中客車公司最新一代的A320飛機,裝有CFM公司生產的最新Leap-1A發動機,比老一代A320飛機燃油效率提高15%以上,是當前世界最高效環保的單通道飛機。
2019-10-25 11:25:382036

華為8款機型明年將更新多彩AOD滅屏顯示功能

所謂“多彩AOD”就是EMUI10的新功能之一,即多彩AOD滅屏顯示,不僅可以讓用戶隨時看到時間、信息、電量等手機基本信息,還能根據時間的變化而改變字體的顏色。
2019-12-09 14:46:363772

如何測試LED顯示屏是否存在故障問題

隨著LED電子顯示屏以及LED全彩屏的普及應用,LED顯示屏已經成為了當今信息社會的一到美麗的風景線,特別是在夜幕來臨時,LED顯示屏綻放出璀璨的畫面令人們能夠感覺世界的繽紛多彩
2019-12-31 16:40:471516

vr技術如何帶你走進動物的世界

VR技術的出現讓我們對世界有了更加廣闊的認識,讓我們有機會領略到不一樣的風采,VR技術也讓我們重新認識大自然。
2020-03-16 15:38:191796

人工智能走進現實世界的切入點是

人工智能(AI)是研究、開發用于模擬、延伸和擴展人的智能的理論、方法、技術及應用系統的一門新的技術科學。而人工智能走進現實世界的切入點是什么? 想要知道人工智能走進現實世界的切入點是什么這個
2021-06-04 14:39:442007

人工智能走進現實世界的切入點 用戶體驗是關鍵

人工智能AI從理論走進現實,真正走進大家的生活。
2021-06-05 12:20:091841

蘋果助力Mini LED技術再次走進產業鏈視野

在蘋果的“助攻”下,Mini LED技術再次走進產業鏈視野。近日,蘋果在2021年第2場秋季新品發布會上帶來3款新品,其中包括被稱為“Mac筆記本電腦中歷代之最”的新款Macbook Pro,搭載
2021-10-27 09:26:393959

洲明LED煥新一座城驚艷全世界

絢爛的光影、豐富多彩的活動、沉浸式的游玩體驗,這里一直都是光影的世界、歡樂的海洋。 以裸眼3D等原創內容為牽引,以LED顯示屏為交互窗口,將整個城市打造成耀眼的多媒體藝術裝置,這樣的大手筆,正是出自洲明。 項目所使用的全部
2021-11-06 11:01:421605

洲明LED光顯方案成功走進世博會

在眾多展館中,美國、梵蒂岡、以色列等國家館,及迪拜環球港務集團、阿聯酋國家石油公司等合作伙伴展館,共計近3000㎡LED大屏均由中國的洲明科技提供。
2021-12-13 09:50:314797

HT66FB574/572多彩流光USB鼠標應用范例

電玩產業對鼠標需求越來越高,在鼠標上增加大量 RGB LED,并且可產生不同顏色與明亮 變化多種炫酷燈光效果,使游戲鼠標更加多彩多姿,其中多顆 RGB LED 在鼠標外圍圍繞, 并可產生如流水效果顏色變化的鼠標,稱為多彩流光鼠標。
2022-06-26 09:43:412

HT66FB576多彩獨立光USB鍵盤應用范例

HOLTEK 針對多顆多彩燈效產品領域,開發提供應用于多顆 RGB LED 的產品,HT66FB576 最多可應用在 128 顆 RGB LED 的產品,本身又具 USB 接口,用于多彩獨立光鍵盤相當合 適,本文將介紹使用 HT66FB576 開發多彩獨立光鍵盤方案。
2022-06-26 09:42:122

用蜂鳴器制作多彩LED

電子發燒友網站提供《用蜂鳴器制作多彩LED流.zip》資料免費下載
2022-11-10 14:43:180

世界上最薄的NeoPixel LED矩陣

電子發燒友網站提供《世界上最薄的NeoPixel LED矩陣.zip》資料免費下載
2022-11-21 10:55:410

多彩世界地圖上的物聯網圣誕老人追蹤器

電子發燒友網站提供《多彩世界地圖上的物聯網圣誕老人追蹤器.zip》資料免費下載
2022-12-09 16:14:590

走進LED顯示屏的異形世界

異形LED顯示屏以絢麗多彩的顯示效果,靈活多變的畫面表現力,細膩清晰的視覺效果,使精彩的畫面效果得到了淋漓盡致的顯現。為人們在緊張的工作之余帶來輕松愉快的氣氛,享受音樂、美酒以及無拘無束的人際交流所帶來了無窮的樂趣。
2023-04-06 16:46:47502

MP3320A | 這顆芯,律動多彩呼吸節奏

點擊標題下「MPS芯源系統」可快速關注 WLED(白光LED)為我們帶來了白色光芒,但生活也應該充滿絢麗多彩的景象,RGB(紅綠藍)LED 就是色彩的使者, RGB+W 驅動精靈 MP3320A
2023-07-20 12:10:02441

LED球型屏驚艷世界的背后,洲明的厚積與薄發

LED行業的發展史上,LED顯示與LED照明曾因主要功能不同而被劃分為兩個行業陣營,前者注重展示信息,后者注重照亮和裝飾。
2023-07-27 14:09:23648

已全部加載完成

主站蜘蛛池模板: 人妻换人妻AA视频| 在线广播收听| 俄罗斯videosbest8| 久久综合色悠悠| 99热精品在线视频观看| 国产亚洲精品福利视频| 久久九九久精品国产尤物| 亚洲蜜芽在线观看精品一区 | 电影果冻传媒在线播放| 女教师跟黑人男朋友激情过后| 在线看片亚洲| 久久无码AV亚洲精品色午夜| 俄罗斯大白屁股| 19十主播福利视频| 国产亚洲日韩欧美视频| 亚洲日韩精品AV中文字幕| 一个人免费视频在线观看高清版 | 欧美乱妇狂野欧美在线视频| 男女作爱在线播放免费网页版观看| 久热这里在线精品| 快播看黄片| 美女露100%全身无遮挡| 嫩草欧美曰韩国产大片| 娇妻中日久久持久久| 精品熟女少妇AV久久免费A片| 精品国产福利一区二区在线| 久久亚洲电影www电影网| 玖玖爱在线播放| 欧美日韩视频一区二区三区| 日本人添下面的全过程| 欧美国产精品主播一区| 青娱乐在线一区| 男的插曲女的下面免费APP| 欧美伊人久久大香线蕉综合69| 日本xxx护士与黑人| 午夜神器18以下不能进免费| 亚洲黄网站wwwwww| 香艳69xxxxx有声小说| 视频一区亚洲中文字幕| 日日做夜夜欢狠狠免费软件| 亚洲精品国产在线观看|