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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取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

    文章

    4891

    瀏覽量

    70300
  • GPIO
    +關注

    關注

    16

    文章

    1276

    瀏覽量

    53622
  • STM8S
    +關注

    關注

    16

    文章

    149

    瀏覽量

    32008
收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    效果器的基礎知識

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

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

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

    功率器件熱設計基礎知識

    功率器件熱設計是實現IGBT、碳化硅SiC等高功率密度器件可靠運行的基礎。掌握功率半導體的熱設計基礎知識,不僅有助于提高功率器件的利用率和系統可靠性,還能有效降低系統成本。本文將從熱設計的基本概念、散熱形式、熱阻與導熱系數、功率模塊的結構和熱阻分析等方面,對功率器件熱設計基礎知識
    的頭像 發表于 02-03 14:17 ?634次閱讀

    PCB繪制基礎知識

    電子發燒友網站提供《PCB繪制基礎知識.pdf》資料免費下載
    發表于 01-21 15:20 ?6次下載
    PCB繪制<b class='flag-5'>基礎知識</b>

    EMC基礎知識-華為

    EMC基礎知識-華為
    發表于 01-06 14:09 ?2次下載

    萬字長文,看懂激光基礎知識

    深入介紹激光基礎知識,幫助您輕松理解激光領域的關鍵概念和原理。
    的頭像 發表于 12-20 09:49 ?954次閱讀
    萬字長文,看懂激光<b class='flag-5'>基礎知識</b>!

    FPGA基礎知識及設計和執行FPGA應用所需的工具

    本文將首先介紹FPGA的基礎知識,包括FPGA的工作原理以及為什么要使用FPGA等,然后討論設計和執行FPGA應用所需的工具。
    的頭像 發表于 11-11 11:29 ?1693次閱讀
    FPGA<b class='flag-5'>基礎知識</b>及設計和執行FPGA應用所需的工具

    品質管理基礎知識

    品質管理基礎知識
    的頭像 發表于 11-01 11:08 ?615次閱讀
    品質管理<b class='flag-5'>基礎知識</b>

    TWL6030氣體監測基礎知識

    電子發燒友網站提供《TWL6030氣體監測基礎知識.pdf》資料免費下載
    發表于 10-29 10:02 ?0次下載
    TWL6030氣體監測<b class='flag-5'>基礎知識</b>

    Verilog HDL的基礎知識

    本文繼續介紹Verilog HDL基礎知識,重點介紹賦值語句、阻塞與非阻塞、循環語句、同步與異步、函數與任務語法知識
    的頭像 發表于 10-24 15:00 ?1073次閱讀
    Verilog HDL的<b class='flag-5'>基礎知識</b>

    TI電池監控器IC的HDQ通信基礎知識

    電子發燒友網站提供《TI電池監控器IC的HDQ通信基礎知識.pdf》資料免費下載
    發表于 10-12 10:01 ?1次下載
    TI電池監控器IC的HDQ通信<b class='flag-5'>基礎知識</b>

    負載開關基礎知識

    電子發燒友網站提供《負載開關基礎知識.pdf》資料免費下載
    發表于 10-08 09:56 ?2次下載
    負載開關<b class='flag-5'>基礎知識</b>

    全新的半導體基礎知識

    《全新的半導體基礎知識》首先對流行于電子書刊上數十年之久的經典半導體基礎知識中存在的謬誤進行了全方位的討論,然后以半導體內部結構為抓手,以G型半導體(客供電子型半導體)、H型半導體(主供電子型半導體
    的頭像 發表于 09-20 11:30 ?1881次閱讀
    全新的半導體<b class='flag-5'>基礎知識</b>

    超聲波傳感基礎知識

    電子發燒友網站提供《超聲波傳感基礎知識.pdf》資料免費下載
    發表于 09-04 10:21 ?0次下載
    超聲波傳感<b class='flag-5'>基礎知識</b>

    C++語言基礎知識

    電子發燒友網站提供《C++語言基礎知識.pdf》資料免費下載
    發表于 07-19 10:58 ?8次下載
    主站蜘蛛池模板: 两性色午夜视频免费国产 | 国产午夜精品久久久久婷婷 | 日本aa大片 | 欧美肥胖女人bbwbbw视频 | 永久免费看bbb | 一区视频免费观看 | www免费看.男人的天堂 | 日产日韩亚洲欧美综合搜索 | 一个人在线观看免费高清视频 | 好男人资源免费观看1 | 亚洲一区自拍高清亚洲精品 | 台湾佬综合娱乐网 | 偷偷鲁手机在线播放AV | 国产一级毛片在线 | 亚洲欧美国产双大乳头 | 91久久偷偷做嫩草影院免 | 果冻传媒MV免费播放在线观看 | 国产精品久久精品视 | CHESENGAY痞帅警察GV| 天天操天天干天天爽 | 精品视频在线播放 | 97超在线视频| 欧美高清vivoesond在线播放 | 国产av在在免费线观看美女 | 99视频精品免视3 | 广东95后小情侣酒店自拍流出 | 国产线精品视频在线观看 | 国产探花在线精品一区二区 | 午夜片无码区在线观看 | 久久综合给会久久狠狠狠 | 老头狠狠挺进小莹体内视频 | 97视频在线播放 | CHINA末成年VIDEO学生 | 男人和女人一级黄色大片 | 欧美 日韩 无码 有码 在线 | 视频网站入口在线看 | 亚洲伊人国产 | 日韩综合网 | 国产成人免费片在线视频观看 | 超碰免费碰免费视频 | 亚洲一日韩欧美中文字幕在线 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品