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

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

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

零基礎(chǔ)開發(fā)小安派-Eyes-S1 外設(shè)篇 ——TIMER

AIoT行業(yè)洞察 ? 來源:AIoT行業(yè)洞察 ? 作者:AIoT行業(yè)洞察 ? 2024-12-21 16:44 ? 次閱讀

AiPi-Eyes-S1是安信可開源團(tuán)隊(duì)專門為Ai-M61-32S設(shè)計(jì)的一款開發(fā)板,支持WiFi6、BLE5.3。所搭載的Ai-M61-32S 模組具有豐富的外設(shè)接口,具體包括 DVP、MJPEG、Dispaly、AudioCodec、USB2.0、SDU、以太網(wǎng) (EMAC)、SD/MMC(SDH)、SPI、UARTI2C、I2S、PWM、GPDAC、GPADC、ACOMP 和 GPIO 等。

AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。

從零開始學(xué)習(xí)小安派:

1、零基礎(chǔ)開發(fā)小安派-Eyes-S1【入門篇】——初識(shí)小安派-Eyes-S1

2、零基礎(chǔ)開發(fā)小安派-Eyes-S1【入門篇】——安裝VMware與Ubuntu

3、入門篇:零基礎(chǔ)開發(fā)小安派-Eyes-S1——新建工程并燒錄調(diào)試

4、零基礎(chǔ)開發(fā)小安派-Eyes-S1入門篇——Win下SSH連接Linux

5、零基礎(chǔ)開發(fā)小安派-Eyes-S1【入門篇】——Samba共享文件夾

6、零基礎(chǔ)開發(fā)小安派-Eyes-S1【入門篇】——工程文件架構(gòu)

7、零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——GPIO 輸入輸出

8、零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——GPIO中斷編程

9、零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——PWM

10、零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——UART

11、零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——I2C

12、零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——ADC

13、零基礎(chǔ)開發(fā)小安派-Eyes-S1【外設(shè)篇】——I2S

TIMER 也就是定時(shí)器,可以根據(jù)時(shí)鐘源來分配計(jì)時(shí)的時(shí)間周期,實(shí)現(xiàn)準(zhǔn)確的計(jì)時(shí),一般軟件的定時(shí)會(huì)出現(xiàn)誤差,一些特殊情況需要精準(zhǔn)的定時(shí),那就需要使用到硬件定時(shí)器,如定時(shí) 5 分鐘執(zhí)行某些特殊任務(wù)。定時(shí)器可以搭配中斷來使用,利用好時(shí)間間隔而滿足個(gè)人的需求。

一、了解小安派-Eyes-S1 的 TIMER

芯片內(nèi)置了兩個(gè) 32-Bit 定時(shí)器,這兩個(gè)定時(shí)器在 LHAL 庫里對(duì)應(yīng) timer0 和 timer1。

這兩組 TIMER 有以下特征:

? 多種時(shí)鐘來源,最高可支持 80M 時(shí)鐘

? 8-bit 時(shí)鐘分頻器,分頻系數(shù)為 1-256

? 兩個(gè) 32-bit 定時(shí)器:channel 0 和 channel 1

? 定時(shí)器包含三組報(bào)警值設(shè)定,可設(shè)定報(bào)警值溢出時(shí)報(bào)警

? 支持 Free Run 模式和 Pre_load 模式

? 一個(gè) 16-bit 看門狗定時(shí)器

? 支持寫入密碼保護(hù),防止誤設(shè)定造成系統(tǒng)異常

? 支持中斷或復(fù)位兩種看門狗溢出方式

? 支持測量外部 GPIO 的脈沖寬度

定時(shí)器的時(shí)鐘來源有以下五種選擇:

? BCLK--總線時(shí)鐘

? 32K--32K 時(shí)鐘

? 1K--1K 時(shí)鐘(32K 的分頻)

? XTAL--外部晶振

? GPIO--外部 GPIO

#define TIMER_CLKSRC_BCLK 0

#define TIMER_CLKSRC_32K 1

#define TIMER_CLKSRC_1K 2

#define TIMER_CLKSRC_XTAL 3

#define TIMER_CLKSRC_GPIO 4

#define TIMER_CLKSRC_NO 5

計(jì)數(shù)模式有以下兩種:

定時(shí)器計(jì)數(shù)模式分為兩種: freerun(向上計(jì)數(shù)模式)、preload(重裝載模式)。

#define TIMER_COUNTER_MODE_PROLOAD 0

#define TIMER_COUNTER_MODE_UP 1

定時(shí)器一共三個(gè) compare id, 用于設(shè)置不同的定時(shí)時(shí)間,可以當(dāng)三個(gè)定時(shí)器使用。

#define TIMER_COMP_ID_0 0

#define TIMER_COMP_ID_1 1

#define TIMER_COMP_ID_2 2

二、結(jié)構(gòu)體與函數(shù)接口

struct bflb_timer_config_s

說明:Timer 初始化配置結(jié)構(gòu)體

struct bflb_timer_config_s {

uint8_t counter_mode;

uint8_t clock_source;

uint8_t clock_div;

uint8_t trigger_comp_id;

uint32_t comp0_val;

uint32_t comp1_val;

uint32_t comp2_val;

uint32_t preload_val;

};

wKgZPGdjd4KAJQPLAAAkeEjP0ww183.png

bflb_timer_init

說明: 初始化 timer。使用之前需要開啟 timer ip 時(shí)鐘。

void bflb_timer_init(struct bflb_device_s *dev, const struct bflb_timer_config_s *config);

wKgZO2djd4KAT-dUAAAIqeHsacs915.png

bflb_timer_deinit

說明: 反初始化 timer。

void bflb_timer_deinit(struct bflb_device_s *dev);

wKgZPGdjd4OAa8JAAAAGF016QGw164.png

bflb_timer_start

說明: 啟動(dòng) timer 。

void bflb_timer_start(struct bflb_device_s *dev);

wKgZO2djd4OAYGq9AAAF1l-W1zw259.png

bflb_timer_stop

說明: 停止 timer。

void bflb_timer_stop(struct bflb_device_s *dev);

wKgZPGdjd4OAZI6aAAAFzXWYfPI987.png

bflb_timer_set_compvalue

說明: 設(shè)置 timer comp id 比較值。

void bflb_timer_set_compvalue(struct bflb_device_s *dev, uint8_t cmp_no, uint32_t val);

wKgZO2djd4SAdNy2AAAKD1K9_P4004.png

bflb_timer_get_compvalue

說明: 獲取 comp id 比較值。

uint32_t bflb_timer_get_compvalue(struct bflb_device_s *dev, uint8_t cmp_no);

wKgZPGdjd4SAblfnAAAKE74RSQQ945.png

bflb_timer_get_countervalue

說明: 獲取 timer 計(jì)數(shù)值。

uint32_t bflb_timer_get_countervalue(struct bflb_device_s *dev);

wKgZPGdjd4SATtxDAAAIbv-d_-I145.png

bflb_timer_compint_mask

說明: timer comp 中斷屏蔽開關(guān)。

void bflb_timer_compint_mask(struct bflb_device_s *dev, uint8_t cmp_no, bool mask);

wKgZO2djd4WAT89zAAAK5c-68-Y331.png

bflb_timer_get_compint_status

說明: 獲取 timer comp id 中斷匹配標(biāo)志。

bool bflb_timer_get_compint_status(struct bflb_device_s *dev, uint8_t cmp_no);

wKgZPGdjd4WAQvOMAAALPSi4zpg907.png

bflb_timer_compint_clear

說明: 清除 timer comp id 中斷標(biāo)志

void bflb_timer_compint_clear(struct bflb_device_s *dev, uint8_t cmp_no);

wKgZO2djd4aAK3LIAAAIPdL47Zw260.png

三、定時(shí)器的兩種計(jì)數(shù)方式以及中斷觸發(fā)

定時(shí)器時(shí)鐘源的選擇以及分頻

以選擇 TIMER_CLKSRC_XTAL 這個(gè)外部晶振的時(shí)鐘源來舉例,頻率為 40MHz,而分頻系數(shù),也就是結(jié)構(gòu)體中的 clock_div,這里系數(shù)可選 0~255,選擇 39,時(shí)鐘計(jì)數(shù)=時(shí)鐘頻率/(分頻系數(shù) +1)。也就是 40Mhz/(39+1),也就是 1Mhz,而周期與頻率互為倒數(shù),也就是 1us 一個(gè)計(jì)數(shù)。這樣分頻的話就是一微秒計(jì)數(shù) +1。

計(jì)數(shù)模式

TIMER 有兩種計(jì)數(shù)模式,分別是 freerun(向上計(jì)數(shù)模式)、preload(重裝載模式)。

FreeRun 模式下,計(jì)數(shù)器的初始值為 0,定時(shí)器開始后,累加計(jì)數(shù),當(dāng)達(dá)到計(jì)數(shù)最大值后,然后從 0 再次開始計(jì)數(shù)。而最大值的數(shù)量估計(jì)是 comp0 的數(shù)據(jù)類型最大值,也就是 32 位數(shù)據(jù)。

相比之下,PreLoad 模式就好用多了,計(jì)數(shù)器的初始值是 PreLoad 寄存器的值,然后向上累加計(jì)數(shù),當(dāng)滿足 PreLoad 條件時(shí),計(jì)數(shù)器的值被置為 PreLoad 寄存器的值,然后計(jì)數(shù)器再次開始向上累加計(jì)數(shù)。

中斷

結(jié)構(gòu)體有 trigger_comp_id 選擇幾個(gè)比較 ID,如果選擇三個(gè) ID 的情況下,在定時(shí)器的計(jì)數(shù)器計(jì)數(shù)過程中,一旦計(jì)數(shù)器的值與三個(gè)比較器中的某比較值一致,該比較器的比較標(biāo)志就會(huì)置位,并可以產(chǎn)生相應(yīng)的比較中斷。在所有的 ID 中斷調(diào)節(jié)都達(dá)到后,會(huì)回到 PreLoad 的值,也就是 preload_val 重新開始計(jì)時(shí)。有如下一個(gè)示例的時(shí)序圖,若預(yù)加載寄存器的值為 10,比較器 0 的值為 13,比較器 1 的值為 16,比較器 2 的值為 19。

wKgZPGdjd4aAfv_YAACavsctMPU42.jpeg

在 FreeRun 模式下,定時(shí)器工作時(shí)序與 PreLoad 基本相同,只是計(jì)數(shù)器會(huì)從 0 開始累計(jì)到最大值,期間產(chǎn)生的比較標(biāo)志和比較中斷的機(jī)制與 FreeRun 模式相同。

簡單示例:定時(shí)器分頻每一秒進(jìn)入一次中斷,在中斷修改全局變量,在主函數(shù)中打印

Main

#include "bflb_mtimer.h"

#include "bflb_timer.h"

#include "board.h"

struct bflb_device_s *timer0;

volatile static uint16_t MyTime_s = 0; //定義一個(gè)全局變量,在中斷中修改,這里注意要用volatile關(guān)鍵字防止變量被優(yōu)化

void timer0_isr(int irq, void *arg)

{

bool status = bflb_timer_get_compint_status(timer0, TIMER_COMP_ID_0);

if (status) {

bflb_timer_compint_clear(timer0, TIMER_COMP_ID_0);

if (MyTime_s==60)

{

MyTime_s = 0;

}

MyTime_s++;

printf("time is %drn",MyTime_s);

}

}

//中斷服務(wù)函數(shù),每進(jìn)入一次變量自增1,到達(dá)60也就是1分鐘置為0

int main(void)

{

board_init();

printf("Timer basic testn");

/* timer clk = XCLK/(div + 1 )*/

struct bflb_timer_config_s cfg0;

cfg0.counter_mode = TIMER_COUNTER_MODE_PROLOAD; /* 選擇重裝載模式 */

cfg0.clock_source = TIMER_CLKSRC_XTAL;//選擇外部時(shí)鐘晶振,40MHz

cfg0.clock_div = 39; /* for bl616/bl808/bl606p is 39, for bl702 is 31 */

cfg0.trigger_comp_id = TIMER_COMP_ID_0;//選擇比較ID的個(gè)數(shù),這里選擇一個(gè)ID,也就是只會(huì)到達(dá)下面的ID1

cfg0.comp0_val = 1000000; /* 比較值ID1,當(dāng)計(jì)數(shù)達(dá)到1000000時(shí),根據(jù)前面的分頻一微秒一個(gè)計(jì)數(shù),也就是總共1秒 */

cfg0.comp1_val = 2500000; /* 比較值ID2,需要大于ID1,由于前面只設(shè)置了一個(gè)ID,所以這里不會(huì)觸發(fā) */

cfg0.comp2_val = 3500000; /* 比較值ID2,需要大于ID2,由于前面只設(shè)置了一個(gè)ID,所以這里不會(huì)觸發(fā) */

cfg0.preload_val = 0; /* 重裝載值,開始的值,以及比較完所有ID個(gè)數(shù)后重啟的值 */

timer0 = bflb_device_get_by_name("timer0");

/* Timer init with default configuration */

bflb_timer_init(timer0, &cfg0);

bflb_irq_attach(timer0->irq_num, timer0_isr, NULL);

bflb_irq_enable(timer0->irq_num);

/* Enable timer */

bflb_timer_start(timer0);//開啟定時(shí)器

printf("case success.rn");

while (1) {

switch (MyTime_s)

{

case 10:

printf("10 seconds have passedrn");

break;

case 20:

printf("20 seconds have passedrn");

break;

case 30:

printf("30 seconds have passedrn");

break;

case 40:

printf("40 seconds have passedrn");

break;

case 50:

printf("50 seconds have passedrn");

break;

case 60:

printf("One minute has already passedrn");

break;

default:

break;

}

//對(duì)全局變量進(jìn)行判斷,通過switch語句分別打印

bflb_mtimer_delay_ms(900);

//這個(gè)延遲是為了防止在主函數(shù)中重復(fù)判斷導(dǎo)致瘋狂打印

}

}

?效果

wKgZO2djd4aAPJwlAABhOzDLlVA30.jpeg


審核編輯 黃宇

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

    關(guān)注

    3

    文章

    3342

    瀏覽量

    42491
  • Timer
    +關(guān)注

    關(guān)注

    1

    文章

    64

    瀏覽量

    12786
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    零基礎(chǔ)開發(fā)小安-Eyes-S1外設(shè)——I2S

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從開始學(xué)習(xí)小安
    的頭像 發(fā)表于 12-13 18:02 ?944次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b><b class='flag-5'>外設(shè)</b><b class='flag-5'>篇</b>——I2<b class='flag-5'>S</b>

    電子DIY作品 小安R1做個(gè)86盒中控

    前言 筆者之前看小安的開源資料, 就對(duì) R1 這個(gè)板子情有獨(dú)鐘 這就是為 86 盒而生啊 剛好安信可社區(qū)一直有積分兌換活動(dòng) (https://bbs.ai-thinker.com/) 這次就用
    的頭像 發(fā)表于 12-05 14:34 ?169次閱讀
    電子DIY作品 <b class='flag-5'>小安</b><b class='flag-5'>派</b>R<b class='flag-5'>1</b>做個(gè)86盒中控

    零基礎(chǔ)開發(fā)小安-Eyes-S1外設(shè)】——FLASH

    。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從開始學(xué)習(xí)小安
    的頭像 發(fā)表于 12-05 14:31 ?187次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>【<b class='flag-5'>外設(shè)</b><b class='flag-5'>篇</b>】——FLASH

    零基礎(chǔ)入門PCB工程師

    各位前輩大家好,零基礎(chǔ)入門PCB工程師,有什么學(xué)習(xí)資料推薦嗎?
    發(fā)表于 11-27 16:54

    零基礎(chǔ)開發(fā)小安-Eyes-S1 外設(shè) ——I2C

    。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從開始學(xué)習(xí)小安
    的頭像 發(fā)表于 11-27 16:39 ?218次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b> <b class='flag-5'>外設(shè)</b><b class='flag-5'>篇</b> ——I2C

    小安 AiPi-Eyes-R2 玩植物大戰(zhàn)僵尸

    - Eyes-R1 帶外置 ES8388 音頻芯片,支持兩路音頻輸入輸出。小安 - Eyes-R2 采用內(nèi)置 CodeC,支持單路音頻輸入輸出。 如果是編譯帶 8388
    的頭像 發(fā)表于 11-06 16:10 ?215次閱讀
    用<b class='flag-5'>小安</b><b class='flag-5'>派</b> AiPi-<b class='flag-5'>Eyes</b>-R2 玩植物大戰(zhàn)僵尸

    零基礎(chǔ)開發(fā)小安-Eyes-S1【入門】——工程文件架構(gòu)

    -Eyes-S1【入門】——初識(shí)小安-Eyes-S12、零基礎(chǔ)
    的頭像 發(fā)表于 11-06 16:10 ?158次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>【入門<b class='flag-5'>篇</b>】——工程文件架構(gòu)

    零基礎(chǔ)開發(fā)小安-Eyes-S1外設(shè)】——PWM

    】——工程文件架構(gòu)7、零基礎(chǔ)開發(fā)小安-Eyes-S1外設(shè)
    的頭像 發(fā)表于 11-06 16:10 ?152次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>【<b class='flag-5'>外設(shè)</b><b class='flag-5'>篇</b>】——PWM

    零基礎(chǔ)開發(fā)小安-Eyes-S1外設(shè)——GPIO中斷編程

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 產(chǎn)品資料:https://docs.ai-thinker.com/eyes
    的頭像 發(fā)表于 10-29 14:56 ?755次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b><b class='flag-5'>外設(shè)</b><b class='flag-5'>篇</b>——GPIO中斷編程

    零基礎(chǔ)開發(fā)小安-Eyes-S1外設(shè)——GPIO 輸入輸出

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從開始學(xué)習(xí)小安
    的頭像 發(fā)表于 10-25 13:50 ?1023次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b><b class='flag-5'>外設(shè)</b><b class='flag-5'>篇</b>——GPIO 輸入輸出

    開發(fā)教程 零基礎(chǔ)開發(fā)小安-Eyes-S1入門——Win下SSH連接Linux

    AiPi-Eyes-S1 是安信可開源團(tuán)隊(duì)專門為Ai-M61-32S設(shè)計(jì)的一款開發(fā)板,支持WiFi6、BLE5.3。所搭載的Ai-M61-32S 模組具有豐富的
    的頭像 發(fā)表于 09-24 14:31 ?301次閱讀
    <b class='flag-5'>開發(fā)</b>教程 <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>入門<b class='flag-5'>篇</b>——Win下SSH連接Linux

    RT-Thread驅(qū)動(dòng)開發(fā)指南進(jìn)階-動(dòng)手驅(qū)動(dòng)先楫未適配的外設(shè)LCD

    經(jīng)過上一的《《RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南》基礎(chǔ)--以先楫bsp的hwtimer設(shè)備為例》闡述,可以大致了解到RT-thread設(shè)備驅(qū)動(dòng)開發(fā)的方法步驟,
    的頭像 發(fā)表于 02-25 11:04 ?2547次閱讀
    RT-Thread驅(qū)動(dòng)<b class='flag-5'>開發(fā)</b>指南進(jìn)階<b class='flag-5'>篇</b>-動(dòng)手驅(qū)動(dòng)先楫未適配的<b class='flag-5'>外設(shè)</b>LCD

    功德+1,用小安-Eyes-S1做一個(gè)電子木魚

    2024積德累功,心想事成!接下來 看看如何用小安-Eyes-S1做一個(gè)電子木魚 。 01、GUI-Guider 頁面設(shè)計(jì) 先新建一個(gè)工程。 直接進(jìn)入 UI 設(shè)計(jì)界面,這里用到了兩個(gè)組件, 一個(gè)是圖片按鈕,一個(gè)是文本框 。 先
    的頭像 發(fā)表于 01-16 14:33 ?756次閱讀
    功德+<b class='flag-5'>1</b>,用<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>做一個(gè)電子木魚

    如何用小安-Eyes-S1做一個(gè)電子木魚?

    2024年的第一教程來了,本篇學(xué)習(xí)如何添加LVGL事件,并制作完成一個(gè)電子木魚(小美苦苦哀求,我略微出手而已)。祝大家2024積德累功,心想事成!接下來看看如何用小安-Eyes-S1
    的頭像 發(fā)表于 01-13 15:18 ?1029次閱讀
    如何用<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>做一個(gè)電子木魚?

    【核桃1B 開發(fā)板試用體驗(yàn)】+部分外設(shè)功能測試

    核桃開發(fā)板配置了許多的接口及相應(yīng)的處理,直接使用它們就可獲得相應(yīng)的用途。 音頻接口 核桃板載了一個(gè)3.5mm的音頻輸出口,通過該接口可提供一定的輸出功率,能驅(qū)動(dòng)耳機(jī)或帶功放的揚(yáng)聲器。 圖
    發(fā)表于 01-04 10:30