国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

STM8S_001_ GPIO基礎知識

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-03-20 11:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

入門

完事開頭難,只要肯努力;

師傅領進門,修行看個人;

寫在前面 Ⅰ

當你看到本文,說明你是幸運的,作者接下來推出的一系列STM8S教程,將助你踏入STM8S的世界。

本文是STM8S教程的開始,寫給剛入門STM8S的朋友。學習本文之前,建議你先掌握C語言基礎知識,了解單片機基礎知識。

作者將理論知識結合軟件工程源代碼講述STM8S的相關知識,如果你掌握單片機基礎知識,那么內容難度比較低。教程重點結合“STM8S參考手冊”來講述相關理論知識。

為方便大家閱讀,本文內容已經整理成PDF文件:

http://pan.baidu.com/s/1i5uWhJR

GPIO基礎知識 Ⅱ

GPIO:General Purpose Input Output即通用輸入輸出口;

每個端口都分配有一個輸出數據寄存器,一個輸入引腳寄存器,一個數據方向寄存器,一個選擇寄存器,和一個配置寄存器。一個I/O口工作在輸入還是輸出是取決于該口的數據方向寄存器的狀態。

?輸入模式:浮動輸入和帶上拉輸入;

?輸出模式:推挽式輸出和開漏輸出;

提示:輸入輸出模式可以通過軟件配置,STM8S沒有輸入下拉。

每一個IO都可以配置成外部中斷,可以單獨使能和關閉;

當作為模擬輸入時可以關閉輸入施密特觸發器來降低功耗。

本文GPIO軟件工程說明 Ⅲ

為了方便大家理解軟件工程具體實現了什么功能,將簡述一下重要的幾點內容。

本文是基礎的軟件工程,主要講述軟件工程相關說明、軟件流程及重點講述GPIO配置的內容。

學習本文之前建議學習如下兩篇文章:

IAR for STM8介紹、下載、安裝與注冊

IAR for STM8系列教程(一)_新建軟件工程詳細過程

文章最后提供下載內容:STM8S資料、本文對應軟件工程源代碼。

軟件工程源代碼 Ⅳ

1.關于工程

工程使用最新IAR for STM8(EWSTM8)集成開發環境,使用STM8S最新的標準外設庫。

本工程適合STM8S和STM8AF系列芯片,包含:

STM8S208、STM8S207、STM8S007、STM8AF52Ax、STM8AF62Ax、STM8S105、

STM8S005、STM8AF626x、STM8AF622x、STM8S103、STM8S003、STM8S903

只要沒有特別說明,工程都適合以上芯片,只需要修改配置為對應芯片即可。

修改兩個地方:

1.Device芯片型號:Project -> Options -> General Options -> Target -> Device

2.芯片型號預定義:Project -> Options -> C/C++ Compiler -> Preprocessor -> Defined Symbols

2.軟件流程

本文提供STM8S軟件工程的流程比較簡單:

配置時鐘、初始化GPIO、while循環

3.代碼分析說明

A.配置時鐘

默認使用16MHz高速內部RC振蕩器(HSI)進行8分頻,即系統時鐘默認為2M(2M = 16M / 2)。我們通過軟件配置成16M,即1分頻。

配置時鐘代碼如下:

voidCLK_Configuration(void)

{

CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //HSI = 16M (1分頻)

}

其中CLK_PRESCALER_HSIDIV分頻值參數可以跟蹤代碼查看:

typedef enum{

CLK_PRESCALER_HSIDIV1 = (uint8_t)0x00, /*!< High speed internal clock prescaler: 1 */

CLK_PRESCALER_HSIDIV2 = (uint8_t)0x08, /*!< High speed internal clock prescaler: 2 */

CLK_PRESCALER_HSIDIV4 = (uint8_t)0x10, /*!< High speed internal clock prescaler: 4 */

CLK_PRESCALER_HSIDIV8 = (uint8_t)0x18, /*!< High speed internal clock prescaler: 8 */

CLK_PRESCALER_CPUDIV1 = (uint8_t)0x80, /*!< CPU clock division factors 1 */

CLK_PRESCALER_CPUDIV2 = (uint8_t)0x81, /*!< CPU clock division factors 2 */

CLK_PRESCALER_CPUDIV4 = (uint8_t)0x82, /*!< CPU clock division factors 4 */

CLK_PRESCALER_CPUDIV8 = (uint8_t)0x83, /*!< CPU clock division factors 8 */

CLK_PRESCALER_CPUDIV16 = (uint8_t)0x84, /*!< CPU clock division factors 16 */

CLK_PRESCALER_CPUDIV32 = (uint8_t)0x85, /*!< CPU clock division factors 32 */

CLK_PRESCALER_CPUDIV64 = (uint8_t)0x86, /*!< CPU clock division factors 64 */

CLK_PRESCALER_CPUDIV128 = (uint8_t)0x87 /*!< CPU clock division factors 128 */

} CLK_Prescaler_TypeDef;

B.GPIO配置

我定義了一個LED燈的IO,使用宏定義(方便修改):

#define LED_GPIO_PORT GPIOD

#define LED_GPIO_PIN GPIO_PIN_4

初始化配置為推完高速輸出,輸出默認值為低:

GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PIN,GPIO_MODE_OUT_PP_LOW_FAST);

具體配置參數有多種:

typedef enum

{

GPIO_MODE_IN_FL_NO_IT = (uint8_t)0x00, /*!< Input floating, no external interrupt */

GPIO_MODE_IN_PU_NO_IT = (uint8_t)0x40, /*!< Input pull-up, no external interrupt */

GPIO_MODE_IN_FL_IT = (uint8_t)0x20, /*!< Input floating, external interrupt */

GPIO_MODE_IN_PU_IT = (uint8_t)0x60, /*!< Input pull-up, external interrupt */

GPIO_MODE_OUT_OD_LOW_FAST = (uint8_t)0xA0, /*!< Output open-drain, low level, 10MHz */

GPIO_MODE_OUT_PP_LOW_FAST = (uint8_t)0xE0, /*!< Output push-pull, low level, 10MHz */

GPIO_MODE_OUT_OD_LOW_SLOW = (uint8_t)0x80, /*!< Output open-drain, low level, 2MHz */

GPIO_MODE_OUT_PP_LOW_SLOW = (uint8_t)0xC0, /*!< Output push-pull, low level, 2MHz */

GPIO_MODE_OUT_OD_HIZ_FAST = (uint8_t)0xB0, /*!< Output open-drain, high-impedance level,10MHz */

GPIO_MODE_OUT_PP_HIGH_FAST = (uint8_t)0xF0, /*!< Output push-pull, high level, 10MHz */

GPIO_MODE_OUT_OD_HIZ_SLOW = (uint8_t)0x90, /*!< Output open-drain, high-impedance level, 2MHz */

GPIO_MODE_OUT_PP_HIGH_SLOW = (uint8_t)0xD0 /*!< Output push-pull, high level, 2MHz */

}GPIO_Mode_TypeDef;

上面基礎知識已經說了關于GPIO的輸入輸出模式種類:輸出分類:推挽式輸出和開漏輸出。推完輸出具有輸出驅動能力,比較常見。開漏輸出是沒有輸出能力的,用在特殊場合,如I2C的DATA總線。這兩種輸出的具體意思可以網上搜索。

C.具體實現功能

在main函數中的while里面就是本文源代碼實現的具體功能,將一個LED燈(IO)高低交替輸出,達到LED亮滅的效果。

代碼:

while(1)

{

LED_ON; //LED亮

SoftwareDelay(0x6000);

LED_OFF; //LED滅

SoftwareDelay(0x6000);

}

這里的SoftwareDelay函數就不用說了,主要就是軟件延時一段時間。

好了,希望以上一些基礎內容希望對初學的你有所幫助。

下載 Ⅴ

STM8S資料:

http://pan.baidu.com/s/1o7Tb9Yq

軟件工程源代碼(STM8S-A01_GPIO基礎知識):

http://pan.baidu.com/s/1c2EcRo0

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

    關注

    30

    文章

    4968

    瀏覽量

    73960
  • GPIO
    +關注

    關注

    16

    文章

    1328

    瀏覽量

    56222
  • STM8S
    +關注

    關注

    16

    文章

    149

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    STM8S207xx/STM8S208xx:高性能8位MCU的深度剖析

    STM8S207xx/STM8S208xx:高性能8位MCU的深度剖析 在當今復雜多變的電子世界中,選擇一款合適的微控制器(MCU)對于產品的成功至關重要。STM8S207xx和STM
    的頭像 發表于 02-28 14:50 ?134次閱讀

    labview編程及基礎知識分享

    最近建了一個公眾號,本人會在上面進行labview編程知識的分享,歡迎大家關注;公眾號叫:上位機知識分享LABVIEW
    發表于 02-13 10:08

    一文帶你徹底搞懂K8s網絡

    說實話,K8s 網絡是我見過最讓新手頭疼的知識點,沒有之一。記得我剛接觸 K8s 那會兒,看著流量在 Pod、Service、Node 之間穿梭,完全是一臉懵逼。后來踩了無數坑,熬了無數夜,總算把這套網絡模型摸透了。今天這篇文章
    的頭像 發表于 02-06 10:15 ?432次閱讀

    阻燃系列基礎知識

    我很榮幸有機會在這里與大家分享我對阻燃系列基礎知識的研究。今天,我們將探討的主題是“阻燃系列基礎知識”。在我們日常生活中,火災事故頻發,造成巨大的財產損失和人員傷亡。因此,了解阻燃材料的基礎知識對于
    的頭像 發表于 02-06 08:07 ?269次閱讀
    阻燃系列<b class='flag-5'>基礎知識</b>

    無刷電機驅動器的基礎知識

    本文將從技術角度出發,對三相無刷電機的電機驅動器的作用、種類和規格進行介紹。通過本文,您可以學習到電機驅動器選型所需的基礎知識
    的頭像 發表于 12-10 14:13 ?6679次閱讀
    無刷電機驅動器的<b class='flag-5'>基礎知識</b>

    RK?平臺?Vendor Storage?開發指南:基礎知識、流程與實用技巧

    備可靠性校驗、掉電恢復等關鍵特性,是保障設備身份標識、功能授權等核心信息安全的重要組件。本文將從基礎知識、開發流程、使用途徑三方面,為開發者梳理完整的開發邏輯。 一、核心基礎知識:了解?Vendor Storage?是什么? 1.?核心定位與核心特性 Vendor Sto
    的頭像 發表于 11-22 07:11 ?648次閱讀
    RK?平臺?Vendor Storage?開發指南:<b class='flag-5'>基礎知識</b>、流程與實用技巧

    視覺工程師必須知道的工業相機基礎知識

    工業相機基礎知識概述。
    的頭像 發表于 09-19 17:04 ?1272次閱讀
    視覺工程師必須知道的工業相機<b class='flag-5'>基礎知識</b>

    AGPIO:低功耗設計的基礎知識“基石”

    ,全稱為AON GPIO(Always-On GPIO)——具有在低功耗模式或休眠模式下保持供電和功能的特性。 ? 當AGPIO作為GPIO中斷功能使用時,無法設置為內部上拉或內部下拉。 AGPIO輸出驅動能力單管腳≤5mA,但
    的頭像 發表于 08-28 15:13 ?672次閱讀
    AGPIO:低功耗設計的<b class='flag-5'>基礎知識</b>“基石”

    CMOS超大規模集成電路制造工藝流程的基礎知識

    本節將介紹 CMOS 超大規模集成電路制造工藝流程的基礎知識,重點將放在工藝流程的概要和不同工藝步驟對器件及電路性能的影響上。
    的頭像 發表于 06-04 15:01 ?2588次閱讀
    CMOS超大規模集成電路制造工藝流程的<b class='flag-5'>基礎知識</b>

    最易讀懂的理工科基礎叢書——圖解電機基礎知識入門

    本書深人淺出地介紹了電動機的基礎知識、應用和發展,其內容包括電動機的用途、電動機的基礎知識及應用、電流和磁場的關系、直流電動機的結構和作用、交流電動機的結構和作用、特殊電動機的結構和作用
    發表于 04-07 18:28

    1-半導體基礎知識(童詩白、華成英主編)

    介紹了半導體基礎知識,二極管,三極管。
    發表于 03-28 16:12

    單片機學習之GPIO

    今日分享如何通過手冊理解單片機IO知識點含義解釋:1.GPIO:同我們常說的IO口一樣,GeneralPurposeInputOutput(通用輸入/輸出)簡稱為GPIO,每個GPIO
    發表于 03-26 14:53 ?0次下載

    效果器的基礎知識

    電子發燒友網站提供《效果器的基礎知識.doc》資料免費下載
    發表于 03-26 14:30 ?7次下載

    開關電源的基礎知識題目及答案(免積分)

    本文含有開關電源的基礎知識題目及答案,下載附件即可查看!
    發表于 03-06 15:52

    【北京迅為】iTOP-RK3568OpenHarmony系統南向驅動開發GPIO基礎知識

    【北京迅為】iTOP-RK3568OpenHarmony系統南向驅動開發GPIO基礎知識
    的頭像 發表于 03-06 11:23 ?1252次閱讀
    【北京迅為】iTOP-RK3568OpenHarmony系統南向驅動開發<b class='flag-5'>GPIO</b><b class='flag-5'>基礎知識</b>