国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

嵌入式PWM實驗報告

這篇具有很好參考價值的文章主要介紹了嵌入式PWM實驗報告。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

實驗報告書

一、實驗內(nèi)容與目的

實驗內(nèi)容

通過對Exynos4412PWM的操作,控制實驗箱的蜂鳴器實現(xiàn)發(fā)聲,并播放音樂。

實驗?zāi)康?/span>

  1. 掌握使用Cortex-A9控制PWM的方法。
  2. 掌握Cortex-A9PWM寄存器的配置方法。
  3. 掌握驅(qū)動的編寫步驟。
  4. 熟悉VMware+RedHat+XShell+ARM-Linux交叉編譯開發(fā)環(huán)境。

二、實驗原理與程序(原理圖、程序流程圖、程序等)

PWM0_BUZZER原理圖(底板原理圖)

嵌入式PWM實驗報告

?

其連接引腳XpwmTOUT0_C(底板原理圖)

嵌入式PWM實驗報告

?

?

Exynos4412原理圖:

嵌入式PWM實驗報告

?

得:PWM0_BUZZER>>XpwmTOUT0_C>>GPD0_0

程序流程圖

嵌入式PWM實驗報告

?

程序代碼

驅(qū)動文件的核心代碼

①初始化函數(shù):init

static int fs4412_pwm_io_init()

{

??? writel((readl(pwm->gpd0con) & ~(0xf)) | 0x2,pwm->gpd0con);

??? //設(shè)置GPD0CON控制寄存器[3:0]的值為0x2, 則TOUT0信號會輸出PWM信號。

??? writel((readl(pwm->timer_base+TCFG0) & ~(0Xff) | 0xc7,pwm->timer_base+TCFG0);

?????? //一級分頻? 分頻值為199? 即200分頻?? 199的16進(jìn)制為0xC7

??? writel((readl(pwm->timer_base + TCFG1) & ~(0xf) | 0x2,pwm->timer_base + TCFG1);

????? //二級分頻,選分頻值為1/2 即2分頻

??? writel(600,pwm->timer_base+TCNTB0);

??? //pwm初值為600

??? writel(300,pwm->timer_base+TCMPB0);

??? //pwm電平翻轉(zhuǎn)值為300

??? writel(readl(pwm->timer_base+TCON) & ~(0xf) | 0x2,pwm->timer_base+TCON);???? ??????????????????????????????????????????????

?????? //定時器手動更新,即加載TCNTB0 和 TCMPB0的值

??? return 0;

}

②與驅(qū)動程序相關(guān)聯(lián)的函數(shù):ioctl

static long fs4412_pwm_ioctl(struct file *file, unsigned int cmd, unsigned long arg)

{

??? int data;

??? if (_IOC_DIR(cmd) == _IOC_WRITE)

??? ??? if (copy_from_user(&data, (void *)arg, sizeof(data)))

??? ??? ??? return -EFAULT;

??? switch(cmd)

??? {

??? case PWM_ON:

??? ??? writel(readl(pwm->timer_base+TCON) & ~(0xf) | 0x9,pwm->timer_base+TCON);

??? ??? //設(shè)置寄存器TCON,使定時器開啟,并啟用自動重載

??? ??? break;

??? case PWM_OFF:

??? ??? writel(readl(pwm->timer_base+TCON) & ~(0xf) ,pwm->timer_base+TCON);

??? ??? //設(shè)置寄存器TCON,使定時器關(guān)閉,低四位清零

??? ??? break;

??? case SET_PRE:

??? ??? writel(readl(pwm->timer_base+TCFG0) & ~(0xff) | (data & 0xff),pwm->timer_base+TCFG0);

??? ??? //設(shè)置寄存器TCFG0的值,低八位先清零,再根據(jù)應(yīng)用程序數(shù)據(jù)傳過來的數(shù)據(jù)進(jìn)行低八位設(shè)置

??? ??? writel(readl(pwm->timer_base+TCON) & ~(0xf) | 0x9,pwm->timer_base+TCON);

??? ??? //定時器開啟,并啟用自動重載

??? ??? break;

??? case SET_CNT:

??? ??? writel(data,pwm->timer_base+TCNB0);

??? ??? ?//設(shè)置pwm定時器的初值TCNB0

??? ??? writel(data/2,pwm->timer_base+TCMPB0);

??? ??? ?//設(shè)置pwm定時器的翻轉(zhuǎn)值TCMPB0

??? ??? break;

??? }

??? return 0;

}

③標(biāo)記化賦值函數(shù)(作用:提供文件系統(tǒng)入口點函數(shù),就可訪問設(shè)備驅(qū)動程序):fops

static struct file_operations fs4412_pwm_fops = {

??? .owner = THIS_MODULE,

??? .open = fs4412_pwm_open,

??? .release = fs4412_pwm_rlease,

??? .unlocked_ioctl = fs4412_pwm_ioctl,

};

驅(qū)動文件Makefile文件代碼

obj-m := fs4412_pwm.o

KERNELDIR := /CBT-SuperIOT/linux-3.5

default:

??? make -C $(KERNELDIR) M=$(shell pwd) modules

clean:

??? rm -rf *.o? *.ko? *.mod.*?? modules.*? Mo*.*

應(yīng)用程序的核心代碼

//打開pwm定時器cmd為 PWM_ON ,入口函數(shù)int ioctl(int fd ,int cmd ) ;

ioctl(dev_fd,PWD_ON);

//設(shè)置pwm定時器的頻率,cmd為SET_PRE入口函數(shù)int ioctl(int fd , int cmd , char *argp );

ioctl(dev_fd,SET_PRE,&pre);

while (1){

for(i = 0;i<sizeof(MotherLoveMeOnceAgain)/sizeof(Note);i++ )

{

div = (PCLK/199/2)/(MotherLoveMeOnceAgain[i].pitch);

//設(shè)置pwm定時器的CNT值, cmd為SET_CNT,把div作為參數(shù)傳入入口函數(shù)int ioctl(int fd , int cmd , char *argp );

ioctl(dev_fd,SET_CNT,&div);

usleep(MotherLoveMeOnceAgain[i ].dimation *50);

}

應(yīng)用程序Makefile文件代碼

CC = arm-linux-gcc

TARGET = All

OBJECT = pwm_test.o

$(TARGET):$(OBJECT)

??? $(CC) $(OBJECT) -o pwm_test

$(OBJECT):test_pwm.c

??? $(CC) -c test_pwm.c -o $(OBJECT)

clean:

??? rm *.o pwm_test

三、實驗操作步驟

硬件驅(qū)動編譯、加載、運(yùn)行步驟

  1. 編譯驅(qū)動程序

編寫fs4412_pwm.c驅(qū)動文件在pc端的Linux系統(tǒng)下編寫

編寫驅(qū)動文件的編譯文件Makefile

使用make命令運(yùn)行Makefile文件,使fs4412_pwm.c文件生成pwm.ko的內(nèi)核模塊文件

  1. 編譯應(yīng)用程序

編寫pwm_test.c驅(qū)動文件在pc端的Linux系統(tǒng)下編寫

編寫驅(qū)動文件的編譯文件Makefile,make一下

配置交叉開發(fā)環(huán)境

①連接Cortex-A9的3根線:電源線、串口線、網(wǎng)線。

②配置網(wǎng)絡(luò)IP地址。

  1. PC Linux網(wǎng)絡(luò)與PC主機(jī)在同一網(wǎng)段
  2. Cortex-A9網(wǎng)絡(luò)與PC(或PC Linux)在同一網(wǎng)段內(nèi)
  3. Ping: Cortex-A9和PC Linux是否可以通
  4. 關(guān)閉PC Linux端的防火墻和NFS服務(wù)

③使用XShell來連接Cortex-A9,并將PC Linux系統(tǒng)下的/CBT-SuperIOT目錄掛載到Cortex-A9系統(tǒng)下的/mnt目錄下

  1. 加載驅(qū)動程序

將內(nèi)核文件加載到Linux系統(tǒng)的內(nèi)核里面:insmod adc.ko

  1. 創(chuàng)建設(shè)備文件

生成設(shè)備文件mknod /dev/pwm c 500 0

  1. 運(yùn)行應(yīng)用程序

進(jìn)入adc應(yīng)用程序的目錄中運(yùn)行:./pwm_test

四、實驗結(jié)果與總結(jié)

實驗結(jié)果

???? 蜂鳴器可播放pwm_music.h文件的音樂。

實驗總結(jié)文章來源地址http://www.zghlxwxcb.cn/news/detail-465029.html

  1. 學(xué)習(xí)到了PWM的工作原理
  2. PWM需首先設(shè)置定時器對應(yīng)引腳的復(fù)用選擇。
  3. 設(shè)置定時器的輸入工作頻率的分頻。
  4. 設(shè)置定時器的計數(shù)初值和比較寄存器。
  5. 最后設(shè)置定時的工作模式,并啟動定時器。

到了這里,關(guān)于嵌入式PWM實驗報告的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 嵌入式學(xué)習(xí)筆記——PWM與輸入捕獲(下)

    嵌入式學(xué)習(xí)筆記——PWM與輸入捕獲(下)

    上一篇介紹了通用定時器的輸出比較部分,這一篇再來介紹一下輸入捕獲的相關(guān)內(nèi)容。 輸入捕獲,見名知意,就用來對輸入信號進(jìn)行捕獲的,說到捕獲輸入信號,之前介紹過一個叫做外部中斷的片上外設(shè),它的作用也是捕獲輸入;它們的不同在于,外部中斷捕獲的只是邊沿,

    2024年02月06日
    瀏覽(29)
  • 嵌入式系統(tǒng)課程設(shè)計報告

    嵌入式系統(tǒng)課程設(shè)計報告 題目7(序號) 學(xué)生成績查詢系統(tǒng)(題目) ?? ????????? 專??? 業(yè): ?? ???軟件工程 ???????? 班??? 級: ??? ? 軟件二班?????????????? ?? 姓??? 名: ???????? xx????????????? ?? 學(xué)??? 號: ? ??????????2019320100???

    2024年02月13日
    瀏覽(26)
  • 【藍(lán)橋杯】【嵌入式組別】第十三節(jié):PWM輸入捕獲編程

    【藍(lán)橋杯】【嵌入式組別】第十三節(jié):PWM輸入捕獲編程

    目的就是測量輸入到特定管腳上的PWM波的頻率和占空比。 下面是PWM部分的電路圖: PWM由XL555芯片產(chǎn)生,由滑動變阻器R40連接到PA15,滑動變阻器不同的阻值對應(yīng)不同的PWM波的頻率。下面一個也是一樣的原理。 可以看到板子上的PA15引腳的功能分別有:TIM2_CH1和TIM8_CH1,我們在板

    2023年04月11日
    瀏覽(85)
  • 嵌入式系統(tǒng)開發(fā)13——STM32輸出PWM實現(xiàn)呼吸燈

    嵌入式系統(tǒng)開發(fā)13——STM32輸出PWM實現(xiàn)呼吸燈

    本文主要介紹在STM32F103C8T6上,利用定時器輸出PWM波形,進(jìn)而驅(qū)動LED實現(xiàn)呼吸燈。 使用TIM3和TIM4,分別輸出一個PWM波形,PWM的占空比隨時間變化,去驅(qū)動你外接的一個LED以及最小開發(fā)板上已焊接的LED(固定接在 PC13 GPIO端口),實現(xiàn)2個 LED呼吸燈的效果。 脈沖寬度調(diào)制(PWM) ,是

    2023年04月08日
    瀏覽(90)
  • 嵌入式-stm32-用PWM點亮LED實現(xiàn)呼吸燈

    嵌入式-stm32-用PWM點亮LED實現(xiàn)呼吸燈

    答:LED需要低電平才能亮,高電平是燈滅。 答:這是用到不同占空比來實現(xiàn)的,控制LED實現(xiàn)呼吸燈,就是通過占空比的高低電平和其持續(xù)時間來實現(xiàn)。 ①例如,要定時500ms,則:PSC=7199,ARR=4999,Tclk=72Mhz。 ②假如頻率為 2kHz ,則:PSC=71,ARR=499, 頻率和周期是描述波形的兩個基

    2024年02月03日
    瀏覽(23)
  • 【嵌入式】HC32F定時器PWM捕獲+APC芯片實現(xiàn)模擬AD采樣

    【嵌入式】HC32F定時器PWM捕獲+APC芯片實現(xiàn)模擬AD采樣

    目錄 一 項目背景 二 原理說明 三 設(shè)計實現(xiàn)——定時器初始化 四 設(shè)計實現(xiàn)——PWM捕獲 五 梳理總結(jié) ? ? ? ? 目前使用了TI的ADC采樣芯片 ADS1018實現(xiàn)模擬量4-20mA/0-20mA的采樣 ,原理是 將外部輸入的模擬量信號4-20mA,經(jīng)由并聯(lián)的兩個100Ω電阻,轉(zhuǎn)換為0.2-1V的電壓信號傳遞到模數(shù)轉(zhuǎn)

    2023年04月24日
    瀏覽(24)
  • stm32嵌入式實驗考核

    STM32 實驗考核題目 1. 利用 STM32 小板實現(xiàn):控制外接 LED 燈每隔 3 秒鐘亮暗變換,同 時在 PC 機(jī)上顯示 MCU 的計時時間,MCU 的初始時間由 PC 機(jī) 方設(shè)置。 2. 利用 STM32 小板實現(xiàn):利用導(dǎo)線外接 GPIO 口模擬 2 個按鍵輸入, 根據(jù)輸入組合的四種情況,分別控制三色燈四種流水燈效果

    2024年02月03日
    瀏覽(29)
  • 嵌入式LinuxLED驅(qū)動開發(fā)實驗

    嵌入式LinuxLED驅(qū)動開發(fā)實驗

    我們在裸機(jī)實驗的時候,都是通過配置底層的寄存器來進(jìn)行點亮LED燈的操作的。我們現(xiàn)在還沒有學(xué)習(xí)到設(shè)備樹的相關(guān)知識,所以,我們也是通過在字符設(shè)備驅(qū)動框架的基礎(chǔ)上來配置底層寄存器來實現(xiàn)LED燈的點亮,但是,與之前不同的是,在Linux系統(tǒng)中會存在地址映射的方式,

    2024年02月15日
    瀏覽(24)
  • STM32 PWM模式與輸出比較模式的區(qū)別。PWM占空比不生效,在STM32CubeMX中配置PWM的兩種模式——藍(lán)橋杯嵌入式

    STM32 PWM模式與輸出比較模式的區(qū)別。PWM占空比不生效,在STM32CubeMX中配置PWM的兩種模式——藍(lán)橋杯嵌入式

    ? ??【藍(lán)橋杯嵌入式】專題正在持續(xù)更新中,原理圖解析?,各模塊分析?以及歷年真題講解?都已更新完畢,歡迎大家前往訂閱本專題?? ??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十屆省賽真題 ??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十二屆省賽程序真題 ??【藍(lán)橋杯嵌入式】藍(lán)橋杯第十三屆

    2023年04月15日
    瀏覽(31)
  • 《嵌入式系統(tǒng)開發(fā)實踐》實驗三 進(jìn)程通信

    《嵌入式系統(tǒng)開發(fā)實踐》實驗三 進(jìn)程通信

    一、 實驗?zāi)康?掌握無名管道與有名管道的進(jìn)程通信; 掌握消息隊列的讀寫操作; 掌握共享內(nèi)存的通信機(jī)制。 二、 實驗任務(wù)與要求 管道讀寫程序的編寫與應(yīng)用; 消息隊列的發(fā)送和接收程序的編寫和應(yīng)用; 共享內(nèi)存的創(chuàng)建、連接和分離編程和應(yīng)用。 三、 實驗工具和環(huán)境

    2024年02月07日
    瀏覽(93)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包