日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

如何理解軟件設(shè)計原則和面向接口編程的開發(fā)思想

UtFs_Zlgmcu7890 ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2018-01-22 09:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

周立功教授新書《面向AMetal框架與接口編程(上)》,對AMetal框架進行了詳細介紹,通過閱讀這本書,你可以學(xué)到高度復(fù)用的軟件設(shè)計原則和面向接口編程的開發(fā)思想,聚焦自己的“核心域”,改變自己的編程思維,實現(xiàn)企業(yè)和個人的共同進步。

第七章為面向通用接口的編程,本文內(nèi)容為7.1 LED 控制接口、7.2 HC595 接口、7.3 蜂鳴器控制接口。

本章導(dǎo)讀

雖然面向接口的編程簡單易懂,但無法做到最大程度上地重用應(yīng)用程序,這是導(dǎo)致軟件開發(fā)成本居高不下的原因之一。而面向通用接口的編程就是基于AMetal 框架的應(yīng)用程序設(shè)計,其核心是制定統(tǒng)一的接口規(guī)范,使程序員脫離非核心域的束縛聚焦于核心競爭力。

7.1 LED 控制接口

>>> 7.1.1 LED 通用接口

為了實現(xiàn)跨平臺開發(fā)應(yīng)用軟件,AMetal 提供了操作LED 的通用接口,詳見表7.1。

表7.1 LED 通用接口(am_led.h)

1. 設(shè)置LED 的狀態(tài)

設(shè)置LED 狀態(tài)的函數(shù)原型為:

其中,led_id 為LED 編號,AM824-Core 開發(fā)板共有兩個LED:LED0 和LED1,其編號分別為0 和1。如果LED 的狀態(tài)state 值為AM_TRUE,則點亮LED;反之state 值為AM_FALSE,則熄滅LED,其相應(yīng)的范例程序詳見程序清單7.1。

程序清單7.1 am_led_set()范例程序

2. 點亮LED

點亮LED 的函數(shù)原型為:

其中,led_id 為LED 編號,其相應(yīng)的范例程序詳見程序清單7.2。

程序清單7.2 am_led_on()范例程序

3. 熄滅LED

熄滅LED 的函數(shù)原型為:

其中,led_id 為LED 編號,其相應(yīng)的范例程序詳見程序清單7.3。

程序清單7.3 am_led_off()范例程序

4. 翻轉(zhuǎn)LED 的狀態(tài)

翻轉(zhuǎn)LED 的狀態(tài)就是使LED 由點亮狀態(tài)轉(zhuǎn)變?yōu)橄鐮顟B(tài)或由熄滅狀態(tài)轉(zhuǎn)變?yōu)辄c亮狀態(tài)。

其函數(shù)原型為:

其中,led_id 為LED 編號,其相應(yīng)的范例程序詳見程序清單7.4。

程序清單7.4 am_led_toggle()范例程序

通過LED 通用接口控制AM824-Core 板載的兩個LED,使兩燈交替點亮(2 個LED 的流水燈效果),其相應(yīng)的范例詳見程序清單7.5。

程序清單7.5 兩個LED 燈交替點亮(LED 流水燈)

>>> 7.1.2 LED 驅(qū)動

顯然,如果要想使用通用接口操作LED,則必須為具體的LED 設(shè)備提供相應(yīng)的驅(qū)動?;诖?,AMetal 提供了相應(yīng)的驅(qū)動初始化函數(shù)。當(dāng)使用該函數(shù)初始化一個LED 實例后,即可使用通用LED 接口操作LED。其函數(shù)原型為:

  • p_dev 為指向am_led_gpio_dev_t 類型實例的指針;

  • p_info 為指向am_led_gpio_info_t 類型實例信息的指針。

1. 實例

定義am_led_gpio_dev_t 類型(am_led_gpio.h)實例如下:

其中,g_led_gpio 為用戶自定義的實例,其地址作為p_dev 的實參傳遞。

2. 實例信息

實例信息主要描述了LED 的相關(guān)信息,比如,使用的GPIO 引腳號,LED 為低電平點亮與相應(yīng)的LED 編號等信息。其類型am_led_gpio_info_t 的定義(am_key_gpio.h)如下:

(1)serv_inf0

serv_info 包含LED 編號信息,其類型am_led_servinfo_t 定義如下:

一個LED 設(shè)備可能包含多個LED,start_id 為LED 的起始編號,end_id 為LED 的結(jié)束編號,LED數(shù)目為end_id–start_id+1。由于AM824-Core 開發(fā)板僅有LED0和LED1兩個LED,因此其起始編號為0,結(jié)束編號為1。

(2)p_pins

p_pins 指向存放各個LED 相應(yīng)引腳號的數(shù)組,比如,AM824-Core 開發(fā)板的LED0 通過J9 與MCU 的PIO0_20 相連,LED1 通過J10 與MCU 的PIO0_21 相連?;诖耍x一個存放引腳號的數(shù)組。比如:

該數(shù)組的地址為p_pins 的值。

(3)active_low

當(dāng)引腳輸出低電平時,則點亮LED,因此active_low 的值為AM_TRUE。實例信息定義如下:

基于實例和實例信息,即可完成LED 的初始化。比如:

當(dāng)完成初始化后,即可調(diào)用通用LED 接口操作LED0 和LED1。為了便于配置LED(修改實例信息),基于模塊化編程思想,將初始化相關(guān)的實例和實例信息等定義存放在LED 配置文件中,通過頭文件引出實例初始化函數(shù)接口,源文件和頭文件的程序范例分別詳見程序清單7.6 和程序清單7.7。

程序清單7.6 LED 實例初始化函數(shù)實現(xiàn)(am_hwconf_led_gpio.c)

程序清單7.7 LED 實例初始化函數(shù)聲明(am_hwconf_led_gpio.h)

后續(xù)只需要使用無參數(shù)的實例初始化函數(shù),即可完成LED 實例的初始化:

AM824-Core 的LED0 和LED1 作為一種板載資源,在系統(tǒng)啟動時默認(rèn)進行了初始化操作,因此應(yīng)用程序無需再調(diào)用實例初始化函數(shù),即可直接使用LED0 和LED1。

如果用戶不需要使用LED,為了節(jié)省內(nèi)存空間,可以將工程配置文件(am_prj_config.h)中的AM_CFG_LED_ENABLE 宏值修改為0,裁掉LED 程序,該宏本質(zhì)上控制了板級初始化函數(shù)中的一段程序,詳見程序清單7.8。

程序清單7.8 在板級初始化中裁剪LED 的原理

>>> 7.1.3 MiniPort-LED

MiniPort-LED 模塊由8 個LED 組成的, 當(dāng)MiniPort-LED 與AM824-Core 的PIO0_8~PIO0_15 相連時,如果GPIO 輸出低電平,則點亮LED。由于MiniPort-LED 也是GPIO 驅(qū)動型LED,因此可以使用與板載LED 相同的LED 驅(qū)動。其實例定義如下:

為了避免與板載LED 編號沖突,Miniport-LED 應(yīng)該使用與板載LED 不同的編號,比如,將編號定義為2~9。如果系統(tǒng)不使用板載LED0 和LED1(已將工程配置文件中的AM_CFG_LED_ENABLE 宏值修改為0),僅使用MiniPort-LED,則編號定義為 0~7。其實例信息定義如下:

基于實例和實例信息,即可完成Miniport-LED 的初始化。比如:

當(dāng)完成初始化后,即可調(diào)用通用LED 接口操作LED2~LED9。為了便于配置(修改實例信息)Miniport-LED,基于模塊化編程思想,將初始化相關(guān)的實例和實例信息等定義存放在Miniport-LED 的配置文件中,通過頭文件引出實例初始化函數(shù)接口,源文件和頭文件的程序范例分別詳見程序清單7.9 和程序清單7.10。

程序清單7.9 Miniport-LED 實例初始化函數(shù)實現(xiàn)(am_hwconf_miniport_led.c)

程序清單7.10 MiniPort-LED 實例初始化函數(shù)聲明(am_hwconf_miniport_led.h)

后續(xù)只需要使用無參數(shù)的實例初始化函數(shù),即可完成Miniport-LED 實例的初始化:

當(dāng)完成初始化后,即可使用通用LED 接口操作LED2~LED9。在AM824-Core 中,MiniPort-LED 作為可選的配板資源,在系統(tǒng)啟動時沒有像板載LED0 和LED1 那樣默認(rèn)執(zhí)行初始化操作。如果要使用MiniPort-LED,則必須調(diào)用MiniPort-LED 實例初始化函數(shù)。

7.2 HC595 接口

>>> 7.2.1 HC595 通用接口

AMetal 提供了一套操作HC595 的通用接口,詳見表7.2。

表7.2 HC595 通用接口(am_hc595.h)

1. HC595 輸出

使能HC595 輸出的函數(shù)原型為:

其中,handle 為HC595 的實例句柄,可通過具體的HC595 驅(qū)動初始化函數(shù)獲得。其類型am_hc595_handle_t(am_hc595.h)定義如下:

未使能時,HC595 的輸出處于高阻狀態(tài),使能后才能正常輸出0 或1,范例程序詳見程序清單7.11。

程序清單7.11 am_hc595_enable()范例程序

其中,hc595_handle 可以通過具體的HC595 驅(qū)動獲得,若HC595 使用SPI 驅(qū)動,則可以通過如下語句獲得:

該實例初始化函數(shù)am_miniport_595_inst_init()會在后面詳細介紹。

2. 禁能HC595 輸出

禁能后HC595 輸出處于高阻狀態(tài),其函數(shù)原型為:

其中,handle 為HC595 的實例句柄,范例程序詳見程序清單7.12。

程序清單7.12 am_hc595_disable()范例程序

3. 輸出數(shù)據(jù)

輸出數(shù)據(jù)的函數(shù)原型為:

其中,handle 為HC595 的實例句柄,p_data 為指向待輸出數(shù)據(jù)的緩沖區(qū),nbytes 指定了輸出數(shù)據(jù)的字節(jié)數(shù)。對于單個HC595,其只能并行輸出8 位數(shù)據(jù),即只能輸出單字節(jié)數(shù)據(jù),其范例程序詳見程序清單7.13。

程序清單7.13 輸出單字節(jié)數(shù)據(jù)的范例程序

當(dāng)需要并行輸出超過8 位數(shù)據(jù)時,可以使用多個HC595 級聯(lián),此時即可輸出多字節(jié)數(shù)據(jù),范例程序詳見程序清單7.14。

程序清單7.14 輸出多字節(jié)數(shù)據(jù)的范例程序

對于MiniPort-HC595,僅包含一個HC595,因此每次只能輸出1 字節(jié)數(shù)據(jù)。

>>> 7.2.2 HC595 驅(qū)動

AMetal 已經(jīng)提供基于SPI 的HC595 的驅(qū)動,該驅(qū)動提供了一個初始化函數(shù),使用該函數(shù)初始化一個HC595 實例后,即可得到一個通用的HC595 實例句柄。其函數(shù)原型為:

  • p_dev 為指向am_hc595_spi_dev_t 類型實例的指針;

  • p_info 為指向am_hc595_spi_info_t 類型實例信息的指針。

1. 實例

定義am_hc595_spi_dev_t 類型(am_hc595_spi.h)實例如下:

其中,g_miniport_595 為用戶自定義的實例,其地址作為p_dev 的實參傳遞。

2. 實例信息

實例信息主要描述了HC595 的相關(guān)信息,比如,鎖存引腳、輸出使能引腳以及SPI 速率等,其類型am_hc595_spi_info_t 的定義(am_hc595_spi.h)如下:

其中,pin_lock 指定了HC595 的鎖存引腳,即STR 引腳,該引腳與LPC824 連接的引腳為PIO0_14,因此pin_lock 的值應(yīng)設(shè)置為PIO0_14。

pin_oe 指定了HC595 的輸出使能引腳,該引腳未與LPC824 連接,固定為低電平,因此pin_oe 的值應(yīng)設(shè)置為-1。

clk_speed 指定了SPI 的速率,可根據(jù)實際需要設(shè)定,若HC595 的輸出用于驅(qū)動LED 或數(shù)碼管等設(shè)備,則對速率要求并不高,可設(shè)置為 300000(300KHz)。

lsb_first 決定了一個8 位數(shù)據(jù)在輸出時,輸出位的順序,若該值為AM_TRUE,則表明最低位先輸出,最高位后輸出,若該值為AM_FALSE,則表明最低位后輸出,最高位先輸出,最先輸出的位決定了HC595 輸出端Q7 的電平,最后輸出的位決定了HC595 輸出端Q0的電平。如設(shè)置為AM_TRUE,當(dāng)后續(xù)發(fā)現(xiàn)輸出順序與期望輸出的順序相反時,可再將該值修改為AM_FALSE。基于以上信息,實例信息可以定義如下:

3. SPI 句柄handle

若使用LPC824 的SPI0 驅(qū)動HC595 輸出,則通過LPC82x 的SPI0 實例初始化函數(shù)am_lpc82x_spi0_inst_init()獲得SPI 句柄。即:

SPI 句柄即可直接作為handle 的實參傳遞。

3. 實例句柄

HC595 初始化函數(shù)am_hc595_spi_init ()的返回值即為HC595 實例的句柄,其作為HC595通用接口第一個參數(shù)(handle)的實參。其類型am_hc595_handle_t(am_hc595.h)定義如下:

若返回值為NULL,說明初始化失?。蝗舴祷刂挡粸镹ULL,說明返回了有效的handle。

基于模塊化編程思想,將初始化相關(guān)的實例和實例信息等定義存放在對應(yīng)的配置文件中,通過頭文件引出實例初始化函數(shù)接口,源文件和頭文件的程序范例分別詳見程序清單7.15和程序清單7.16。

程序清單7.15 實例初始化函數(shù)范例程序(am_hwconf_miniport_595.c)

程序清單7.16 實例初始化函數(shù)接口(am_hwconf_miniport_595.h)

后續(xù)只需要使用無參數(shù)的實例初始化函數(shù),即可獲取到HC595 的實例句柄:

當(dāng)直接使用AM824-Core 與MiniPort-LED連接時,使用8 個GPIO 控制8 個LED,得益于MiniPort 接口的靈活性。當(dāng)GPIO 資源不足時,可以在AM824-Core 與MiniPort-LED 之間增加MiniPort-595,使用595 的輸出控制LED,達到節(jié)省引腳的目的。

當(dāng)將MiniPort-595 和MiniPort-LED 連接后,等效的原理圖詳見圖7.1。

圖7.1 MiniPort-595+MiniPort-LED

通過控制HC595的輸出,可以達到控制LED 點亮和熄滅的效果,范例詳見程序清單7.17。

程序清單7.17 74HC595 驅(qū)動LED 的范例程序

由此可見,通用接口的好處就是屏蔽了底層的差異性,使得無論底層硬件怎么變化,應(yīng)用程序都可以使用同一套接口操作LED。顯然,無論是使用GPIO 直接驅(qū)動MiniPort-LED還是使用HC595 驅(qū)動MiniPort-LED,對于用戶來說,都可以使用標(biāo)準(zhǔn)接口訪問。AMeatl 提供了使用HC595 控制LED 的驅(qū)動,使用初始化函數(shù)完成相應(yīng)實例的初始化后,即可使用通用接口操作LED。

>>> 7.2.3 使用HC595 驅(qū)動LED

AMetal 已經(jīng)提供了使用HC595 控制LED 的驅(qū)動,該驅(qū)動提供了一個初始化函數(shù),使用該函數(shù)初始化一個LED 實例后,即可使用通用LED 接口操作LED。其函數(shù)原型為:

  • p_dev 為指向am_led_hc595_dev_t 類型實例的指針;

  • p_info 為指向am_led_hc595_info_t 類型實例信息的指針。

1. 實例

定義am_led_hc595_dev_t 類型(am_led_hc595.h)實例如下:

其中,g_miniport_led_595 為用戶自定義的實例,其地址作為p_dev 的實參傳遞。

2. 實例信息

實例信息主要描述了HC595 驅(qū)動LED 的相關(guān)信息,比如,LED 是否低電平點亮,對應(yīng)的LED 編號等信息。其類型am_led_hc595_info_t 的定義(am_led_hc595.h)如下:

(1)serv_info

serv_info 包含了通用接口訪問LED 的編號信息,當(dāng)使用HC595 驅(qū)動時,編號信息可以保持不變,同樣為2~9。

(2)hc595_num

hc595_num 表示HC595 的個數(shù),顯然一個HC595 只能輸出8 位數(shù)據(jù),因此最多控制8個LED。當(dāng)需要控制的LED 數(shù)目超過8 個時,則需要使用多個HC595 級聯(lián)。對于MiniPort-LED,其僅僅只有8 個LED,恰好使用一個HC595 控制8 個LED,因此hc595_num的值應(yīng)設(shè)置為1。

(3)p_buf

p_buf 是指向一個大小為hc595_num 的緩沖區(qū)的指針,用于緩存各個595 當(dāng)前的輸出值。由于hc595_num 的值設(shè)置為1,因此緩存的大小也為1,緩存定義如下:

其中,g_miniport_led_595_buf 為緩存首地址,即可作為p_buf 的值。

基于以上信息,實例信息定義如下:

3. HC595 句柄handle

若使用Miniport-595 的輸出控制MiniPort-LED,則應(yīng)通過MiniPort-595 的實例初始化函數(shù)am_miniport_595_inst_init()獲得HC595 的句柄。即:

HC595 句柄即可直接作為handle 的實參傳遞,基于實例、實例信息和HC595 句柄,即可完成LED 實例的初始化:

由于HC595 是LED 的另一種驅(qū)動方式,因此將其新增到am_hwconf_miniport_led.c 文件中。為了便于使用,將實例初始化函數(shù)的聲明新增到am_hwconf_miniport_led.h 文件中,詳見程序清單7.18 和程序清單7.19。

程序清單7.18 實例初始化函數(shù)范例程序(am_hwconf_miniport_led.c)

程序清單7.19 am_hwconf_miniport_led.h 文件更新

后續(xù)只需要使用無參數(shù)的實例初始化函數(shù),即可完成Miniport-LED 實例的初始化:

當(dāng)完成初始化后,即可調(diào)用通用LED 接口操作LED~LED9。MiniPort-LED 有兩種驅(qū)動方式:GPIO 驅(qū)動和HC595 驅(qū)動,當(dāng)使用MiniPort-LED 時,應(yīng)該根據(jù)實際情況選擇對應(yīng)的實例初始化函數(shù)。但無論何種驅(qū)動方式,在完成初始化后,對于應(yīng)用程序來說都是調(diào)用通用LED 接口操作LED2~LED9。

7.3 蜂鳴器控制接口

>>> 7.3.1 蜂鳴器通用接口

為了實現(xiàn)跨平臺開發(fā)應(yīng)用軟件,AMetal 提供了操作蜂鳴器的通用接口,詳見表7.3。

表7.3 蜂鳴器通用接口(am_buzzer.h)

1. 打開蜂鳴器

打開蜂鳴器的函數(shù)原型為:

打開蜂鳴器,使蜂鳴器開始鳴叫的范例程序詳見程序清單7.20。

程序清單7.20 am_buzzer_on()范例程序

2. 關(guān)閉蜂鳴器

關(guān)閉蜂鳴器的函數(shù)原型為:

關(guān)閉蜂鳴器,使蜂鳴器停止鳴叫的范例程序詳見程序清單7.21。

程序清單7.21 am_buzzer_off()范例程序

3. 蜂鳴器鳴叫指定時間(同步)

該函數(shù)用于打開蜂鳴器,使蜂鳴器鳴叫指定時間后自動關(guān)閉,該函數(shù)會一直等到蜂鳴器鳴叫結(jié)束后返回。其函數(shù)原型為:

使蜂鳴器鳴叫50 毫秒(“嘀”一聲)的范例程序詳見程序清單7.22。

程序清單7.22 am_buzzer_beep()范例程序

注意,由于該函數(shù)會一直等到蜂鳴器鳴叫結(jié)束后才會返回,因此主程序調(diào)用該函數(shù)后,會阻塞50ms。

4. 蜂鳴器鳴叫指定時間(異步)

該函數(shù)用于打開蜂鳴器,使蜂鳴器鳴叫指定時間后自動關(guān)閉,與am_buzzer_beep()函數(shù)不同的是,該函數(shù)會立即返回,不會等待蜂鳴器鳴叫結(jié)束。其函數(shù)原型為:

使蜂鳴器鳴叫50 毫秒(“嘀”一聲)的范例程序詳見程序清單7.23。

程序清單7.23 am_buzzer_beep_async()范例程序

注意,由于該函數(shù)不會等待蜂鳴器鳴叫結(jié)束,因此,主程序調(diào)用該函數(shù)后,會立即返回,不會被阻塞。顯然,要使應(yīng)用程序可以使用通用接口操作蜂鳴器,就需要為具體的蜂鳴器設(shè)備提供相應(yīng)的驅(qū)動。

>>> 7.3.2 無源蜂鳴器驅(qū)動

無源蜂鳴器內(nèi)部沒有震蕩源,需要外部使用一定頻率的方波信號驅(qū)動才能發(fā)聲。AMetal已經(jīng)提供了無源蜂鳴器的驅(qū)動,直接輸出PWM 驅(qū)動無源蜂鳴器發(fā)聲。其函數(shù)原型為:

其中,pwm_handle 為標(biāo)準(zhǔn)的PWM 服務(wù)句柄,chan 為PWM 通道號,duty_ns 為和period_ns分別指定了輸出PWM 波形的脈寬和周期,決定了蜂鳴器鳴叫的響度和頻率。AM824-Core板載了一個無源蜂鳴器。只要短接J7_1 與J7_2,則蜂鳴器接入PIO0_24。

LPC82x 能夠提供PWM 輸出功能的外設(shè)是SCT(State Configurable Timer),AMetal 提供了對應(yīng)的實例初始化函數(shù),其原型為:

若需使用SCT 輸出PWM,只需調(diào)用其對應(yīng)的實例初始化函數(shù)即可獲取標(biāo)準(zhǔn)的PWM 服務(wù)句柄:

獲取的PWM 服務(wù)句柄即可作為am_buzzer_pwm_init()函數(shù)pwm_handle 的實參傳遞,當(dāng)SCT 用作PWM 功能時,支持6 個通道,即可同時輸出6 路PWM,各通道對應(yīng)的I/O 口詳見表7.4。

表7.4 各通道對應(yīng)的IO 口

由于無源蜂鳴器使用的引腳為PIO0_24,其對應(yīng)的通道為1,因此,chan 參數(shù)的值應(yīng)設(shè)置為1。duty_ns 為和period_ns 分別指定了輸出PWM波形的脈寬和周期,若頻率設(shè)置為2500Hz,則對應(yīng)的周期時間為:400000ns(1000000000 / 2500),占空比通常為50%(脈寬時間為周期時間的一半),即脈寬時間為:200000ns。實際中,可以根據(jù)實際發(fā)聲效果修改脈寬時間和周期時間。

基于對各個參數(shù)的分析,即可調(diào)用am_buzzer_pwm_init()完成無源蜂鳴器的初始化:

無源蜂鳴器作為一種板載資源,在系統(tǒng)啟動時已經(jīng)默認(rèn)進行了初始化操作,因此應(yīng)用程序無需再手動調(diào)用無源蜂鳴器初始化函數(shù),就可以直接使用通用接口操作蜂鳴器。

若用戶不需要使用蜂鳴器,為了節(jié)省內(nèi)存空間,可以將工程配置文件(am_prj_config.h)中的AM_CFG_BUZZER_ENABLE 宏值修改為0,以裁剪掉蜂鳴器,該宏本質(zhì)上控制了板級初始化函數(shù)中的一段程序,詳見程序清單7.24。

程序清單7.24 在板級初始化中裁剪蜂鳴器的原理

注:板級初始化函數(shù)在系統(tǒng)啟動時自動調(diào)用,初始化完畢后才會進入應(yīng)用程序入口,即am_main()。

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

    關(guān)注

    244

    文章

    24731

    瀏覽量

    692634
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    9603

    瀏覽量

    157673
  • 周立功
    +關(guān)注

    關(guān)注

    38

    文章

    130

    瀏覽量

    38807
  • ametal
    +關(guān)注

    關(guān)注

    2

    文章

    24

    瀏覽量

    11740

原文標(biāo)題:周立功:面向通用接口的編程——LED 控制接口、HC595 接口、蜂鳴器控制接口

文章出處:【微信號:Zlgmcu7890,微信公眾號:周立功單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    如何通過API接口獲取Target平臺的目標(biāo)詳情數(shù)據(jù)

    ? ?在現(xiàn)代軟件開發(fā)中,API(應(yīng)用程序編程接口)是連接不同系統(tǒng)和服務(wù)的關(guān)鍵橋梁。Target平臺(這里指代一個通用平臺,如社交媒體、電商或數(shù)據(jù)服務(wù))通常提供API來允許開發(fā)者獲取特定
    的頭像 發(fā)表于 02-03 17:43 ?234次閱讀
    如何通過API<b class='flag-5'>接口</b>獲取Target平臺的目標(biāo)詳情數(shù)據(jù)

    不懂編程,怎么搞定電子儀表上位機軟件?零代碼搞定上位機軟件開發(fā)

    “不懂編程,怎么搞定電子儀表上位機軟件?”這是很多電子儀表用戶的共同困惑。傳統(tǒng)上位機開發(fā)被“專業(yè)編程”門檻牢牢限制,即便你對測試需求了如指掌(比如知道要采集哪些儀表數(shù)據(jù)、怎么分析波形、
    的頭像 發(fā)表于 01-27 17:19 ?766次閱讀
    不懂<b class='flag-5'>編程</b>,怎么搞定電子儀表上位機<b class='flag-5'>軟件</b>?零代碼搞定上位機<b class='flag-5'>軟件開發(fā)</b>

    軟件到硬件的轉(zhuǎn)場:一場由OceanOS-CM0啟發(fā)的嵌入式思考

    ,再返回過來讀讀內(nèi)核代碼,估計也就沒多少難度了?!睂τ谵D(zhuǎn)型中的軟件開發(fā)者而言,這或許是最好的建議——不要急于求成,從最簡單的任務(wù)開始,在實踐中理解原理,在應(yīng)用中領(lǐng)悟思想。 硬件編程的道
    發(fā)表于 01-04 15:52

    ADC模數(shù)轉(zhuǎn)換實戰(zhàn):硬件設(shè)計與軟件開發(fā)要點指南!

    為實現(xiàn)高精度、高穩(wěn)定性的ADC模數(shù)轉(zhuǎn)換,硬件與軟件設(shè)計均需遵循特定原則。硬件層面需優(yōu)化信號調(diào)理、參考電壓及抗干擾設(shè)計;軟件層面需合理配置采樣參數(shù)、實現(xiàn)數(shù)據(jù)濾波及異常處理。本文將結(jié)合實際開發(fā)
    的頭像 發(fā)表于 12-16 13:25 ?596次閱讀
    ADC模數(shù)轉(zhuǎn)換實戰(zhàn):硬件設(shè)計與<b class='flag-5'>軟件開發(fā)</b>要點指南!

    一個面向單片機、事件驅(qū)動的嵌入式開發(fā)平臺介紹

    是windows編程中的消息。事件,可以認(rèn)為是主題 + 不定長數(shù)據(jù),通過事件,可以極大解耦模塊間的耦合,增強軟件的可測試性,還可以進行跨平臺開發(fā)和分布式擴展。 2、防御式編程 Eve
    發(fā)表于 12-05 06:26

    CW32嵌入式軟件開發(fā)的必備知識

    嵌入式軟件開發(fā)作為計算機科學(xué)和電子工程的交叉領(lǐng)域,要求開發(fā)人員具備一系列的專業(yè)知識和技能。 而基于CW32的嵌入式軟件開發(fā)必備知識包括以下部分: 1 、編程語言 熟練掌握C(C++
    發(fā)表于 11-28 07:48

    RESTful API設(shè)計原則: 構(gòu)建易用、可擴展的API接口

    一、理解REST架構(gòu)的核心約束 1.1 RESTful API的六大基本原則 Roy Fielding博士在其博士論文中定義了REST架構(gòu)的六大核心約束: 統(tǒng)一接口(Uniform
    的頭像 發(fā)表于 10-24 10:45 ?736次閱讀

    RESTful API設(shè)計原則: 構(gòu)建易用、可擴展的API接口

    (Representational State Transfer)架構(gòu)原則,構(gòu)建易用、可擴展的API接口,幫助開發(fā)者創(chuàng)建經(jīng)得起時間考驗的服務(wù)。 一、理解REST架構(gòu)的核心約束 1.1
    的頭像 發(fā)表于 10-20 13:45 ?1550次閱讀

    信捷XS STUDIO編程軟件V2.3.2版本的全新功能

    XS Studio(V2.3.2)編程軟件,是面向XS系列的編程組態(tài)軟件,集成了PLC編程、可視
    的頭像 發(fā)表于 09-20 14:19 ?2589次閱讀
    信捷XS STUDIO<b class='flag-5'>編程</b><b class='flag-5'>軟件</b>V2.3.2版本的全新功能

    汽車軟件開發(fā)階段安全的意義與原則

    上海磐時PANSHI“磐時,做汽車企業(yè)的安全智庫”好書分享/《一本書讀懂智能汽車安全》汽車軟件開發(fā)階段安全的意義與原則本文節(jié)選自SASETECH汽車安全社區(qū)組織編寫的《一本書讀懂智能汽車安全》,該書
    的頭像 發(fā)表于 09-05 16:16 ?1140次閱讀
    汽車<b class='flag-5'>軟件開發(fā)</b>階段安全的意義與<b class='flag-5'>原則</b>

    耦合之殤,軟件設(shè)計中的隱疾

    01 引 言 數(shù)據(jù)耦合和控制耦合是復(fù)雜軟件設(shè)計中常見的一種情況。DO-178C要求高安全等級軟件( DAL A/ B /C) 的測試覆蓋分析,必須要確認(rèn)基于需求的測試執(zhí)行了代碼組件之間的數(shù)據(jù)耦合
    的頭像 發(fā)表于 08-28 15:54 ?1242次閱讀
    耦合之殤,<b class='flag-5'>軟件設(shè)計</b>中的隱疾

    開發(fā)單片機需要學(xué)習(xí)什么?軟件編程的 4 個關(guān)鍵層次

    ? ? ? ? ? ? ? ? ? ? 開發(fā)單片機需要學(xué)習(xí)什么?軟件編程的 4 個關(guān)鍵層次 單片機的 “智能” 全靠軟件實現(xiàn),編程技能需從基
    的頭像 發(fā)表于 08-25 11:32 ?1098次閱讀

    【干貨速遞】嵌入式數(shù)據(jù)可靠性,軟件設(shè)計的這些細節(jié)不能忽視!

    問題。軟件設(shè)計軟件設(shè)計在嵌入式數(shù)據(jù)存儲可靠性中扮演著至關(guān)重要的角色。它不僅包括系統(tǒng)驅(qū)動的開發(fā),還涉及應(yīng)用層面的優(yōu)化。一個精心設(shè)計的軟件系統(tǒng)可以顯著提高數(shù)據(jù)的完整性和系統(tǒng)的穩(wěn)
    的頭像 發(fā)表于 07-31 11:34 ?692次閱讀
    【干貨速遞】嵌入式數(shù)據(jù)可靠性,<b class='flag-5'>軟件設(shè)計</b>的這些細節(jié)不能忽視!

    產(chǎn)品列表獲取API接口詳解

    ? 在現(xiàn)代軟件開發(fā)中,API(應(yīng)用程序編程接口)是獲取產(chǎn)品列表的核心工具,它允許開發(fā)者從遠程服務(wù)器高效地檢索數(shù)據(jù)。本文將逐步介紹如何設(shè)計和使用產(chǎn)品列表獲取API
    的頭像 發(fā)表于 07-24 14:29 ?920次閱讀
    產(chǎn)品列表獲取API<b class='flag-5'>接口</b>詳解

    知識分享 | 敏捷方法在基于模型的軟件開發(fā)項目中的應(yīng)用

    傳統(tǒng)的瀑布式軟件開發(fā)流程存在諸多局限,這使得應(yīng)用敏捷原則變得尤為重要,尤其是面對復(fù)雜且不斷變化的開發(fā)環(huán)境時。作為最高效的軟件開發(fā)方法之一,基于模型的
    的頭像 發(fā)表于 07-16 16:52 ?1446次閱讀
    知識分享 | 敏捷方法在基于模型的<b class='flag-5'>軟件開發(fā)</b>項目中的應(yīng)用
    永春县| 横山县| 离岛区| 黎平县| 招远市| 牡丹江市| 太和县| 元朗区| 廉江市| 察哈| 宁南县| 海盐县| 安乡县| 新宁县| 本溪| 广平县| 綦江县| 迁西县| 南岸区| 荔波县| 彝良县| 祁阳县| 耿马| 资阳市| 上林县| 余姚市| 邯郸市| 湘潭市| 隆回县| 陇川县| 温宿县| 西林县| 平遥县| 玉门市| 扶余县| 秀山| 汉川市| 繁峙县| 启东市| 盖州市| 南郑县|