娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

Linux下簡(jiǎn)易蜂鳴器驅(qū)動(dòng)代碼及測(cè)試實(shí)例

發(fā)布者:自由思考最新更新時(shí)間:2025-01-07 來(lái)源: cnblogs關(guān)鍵字:Linux  蜂鳴器驅(qū)動(dòng) 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

驅(qū)動(dòng)代碼


#include <linux/module.h>

#include

#include

#include

#include


#include


#include gpio.h>

#include

#include


#define DEVICE_NAME                'beep3'


#define BEEP_MAGIC 'k'

#define BEEP_START_CMD _IO (BEEP_MAGIC, 1)

#define BEEP_STOP_CMD _IO (BEEP_MAGIC, 2)



static void beep3_stop(void) {

    printk('in the beep3_stop!!n');

    s3c_gpio_cfgpin(S5PV210_GPD0(0), S3C_GPIO_OUTPUT);

    gpio_set_value(S5PV210_GPD0(0), 0);


}


static void beep3_start(void) {

    printk('in the beep3_start!!n');

    s3c_gpio_cfgpin(S5PV210_GPD0(0), S3C_GPIO_OUTPUT);

    gpio_set_value(S5PV210_GPD0(0), 1);


}



static long beep3_ioctl(struct file *filep, unsigned int cmd,

        unsigned long arg)

{

    printk('in the beep3_ioctl!!n');

    switch ( cmd ) {

        case BEEP_START_CMD: {

            printk('in the start_cmd!!n');

            beep3_start();     break;

        }

        case BEEP_STOP_CMD: {

            printk('in the stop_cmd!!n');

            beep3_stop();     break;

        }

        default: {

            break;

        }

    }


    return 0;

}



static struct file_operations beep3_fops = {

    .owner            = THIS_MODULE,

    .unlocked_ioctl    = beep3_ioctl,

};


static struct miscdevice beep3_misc_dev = {

    .minor = MISC_DYNAMIC_MINOR,

    .name = DEVICE_NAME,

    .fops = &beep3_fops,

};


static int __init beep3_dev_init(void) {

    int ret;


    ret = gpio_request(S5PV210_GPD0(0), DEVICE_NAME);

    if (ret) {

        printk('request GPIO %d  failedn',S5PV210_GPD0(0));

        return ret;

    }

    s3c_gpio_cfgpin(S5PV210_GPD0(0), S3C_GPIO_OUTPUT);

    gpio_set_value(S5PV210_GPD0(0), 0);

    


    ret = misc_register(&beep3_misc_dev);


    printk(DEVICE_NAME 'tinitializedn');


    return ret;

}


static void __exit beep3_dev_exit(void) {

    beep3_stop();


    misc_deregister(&beep3_misc_dev);

}


module_init(beep3_dev_init);

module_exit(beep3_dev_exit);


MODULE_LICENSE('GPL');

MODULE_AUTHOR('mhb@SEU');

MODULE_DESCRIPTION('S5PV210 beep Driver');


測(cè)試實(shí)例:


#include

#include  

#include  

#include

#include

#include

#include  

#define BEEP_MAGIC 'k'

#define BEEP_START_CMD _IO (BEEP_MAGIC, 1)

#define BEEP_STOP_CMD _IO (BEEP_MAGIC, 2)


int main(int argc ,char* argv[])

{

   int m_fd=0;// 

   m_fd = open('/dev/beep3', O_RDONLY); 

 


   ioctl(m_fd, BEEP_STOP_CMD);

   while(1)

       {

       printf('enter any key to start !!n');

       getchar();

       ioctl(m_fd, BEEP_START_CMD);

       printf('start success!!n');

       printf('enter any key to stop !!n');

       getchar();

       ioctl(m_fd, BEEP_STOP_CMD);

       }

   close(m_fd);

   return 0; 

}


關(guān)鍵字:Linux  蜂鳴器驅(qū)動(dòng) 引用地址:Linux下簡(jiǎn)易蜂鳴器驅(qū)動(dòng)代碼及測(cè)試實(shí)例

上一篇:喜羊羊系列【設(shè)備 - 驅(qū)動(dòng)器 編譯進(jìn)內(nèi)核】
下一篇:如何將驅(qū)動(dòng)加入內(nèi)核

推薦閱讀最新更新時(shí)間:2025-04-21 12:49

【STM32Cube_12】使用通用定時(shí)器產(chǎn)生PWM驅(qū)動(dòng)蜂鳴器
本篇詳細(xì)的記錄了如何使用STM32CubeMX配置STM32L431RCT6的通用定時(shí)器外設(shè),產(chǎn)生PWM驅(qū)動(dòng)無(wú)源蜂鳴器。 1. 準(zhǔn)備工作 硬件準(zhǔn)備 開發(fā)板 首先需要準(zhǔn)備一個(gè)開發(fā)板,這里我準(zhǔn)備的是STM32L4的開發(fā)板(BearPi): 蜂鳴器 這里我直接使用擴(kuò)展板上的蜂鳴器,如圖: 蜂鳴器的原理圖如下: 軟件準(zhǔn)備 需要安裝好Keil - MDK及芯片對(duì)應(yīng)的包,以便編譯和下載生成的代碼 2.生成MDK工程 選擇芯片型號(hào) 打開STM32CubeMX,打開MCU選擇器: 搜索并選中芯片STM32L431RCT6: 配置時(shí)鐘源 如果選擇使用外部高速時(shí)鐘(HSE),則需要在System Core中配置R
[單片機(jī)]
【STM32Cube_12】使用通用定時(shí)器產(chǎn)生PWM<font color='red'>驅(qū)動(dòng)</font><font color='red'>蜂鳴器</font>
單片機(jī)學(xué)習(xí)札記4---調(diào)試蜂鳴器驅(qū)動(dòng)
這一節(jié)中,我們要繼續(xù)調(diào)試硬件電路,可能很多人對(duì)于單片機(jī)這種學(xué)習(xí)方式很疑惑,因?yàn)檫@不同于以前的按部就班的方式,我們這種學(xué)習(xí)方法,是過(guò)程性學(xué)習(xí)方式,其目的在于循序漸進(jìn),潛移默化的學(xué)習(xí)有關(guān)知識(shí)點(diǎn),來(lái)解決我們遇到的實(shí)際問(wèn)題,從而在實(shí)踐中掌握這種技術(shù),而不是去看枯燥的指令。 蜂鳴器接在單片機(jī)的P3.5引腳,這個(gè)引腳可以輸出時(shí)鐘信號(hào),實(shí)際使用時(shí)可以減少對(duì)單片機(jī)資源的占用。我們新建一個(gè)工程,命名project,然后在編譯器中敲入以下代碼,該代碼的功能是,讓蜂鳴器間隔1S響一次: 下載到目標(biāo)板上,可以聽到蜂鳴器以間隔1S通斷,說(shuō)明這部分電路也是沒有問(wèn)題的。 在這個(gè)例子中,用到了定時(shí)器和中斷,我們將將定時(shí)器配置為傳統(tǒng)的51模式,即
[單片機(jī)]
單片機(jī)學(xué)習(xí)札記4---調(diào)試<font color='red'>蜂鳴器</font><font color='red'>驅(qū)動(dòng)</font>
迅為iMX6開發(fā)板-Linux系統(tǒng)-TFTP使用文檔
TFTP(Trivial File Transfer Protocol,簡(jiǎn)單文件傳輸協(xié)議),是一個(gè)基于 UDP 協(xié)議實(shí) 現(xiàn)的用于在客戶機(jī)和服務(wù)器之間進(jìn)行簡(jiǎn)單文件傳輸?shù)膮f(xié)議,適合于開銷不大、不復(fù)雜的應(yīng)用場(chǎng) 合。TFTP 協(xié)議專門為小文件傳輸而設(shè)計(jì),只能從服務(wù)器上獲取文件,或者向服務(wù)器寫入文 件,不能列出目錄,也不能進(jìn)行認(rèn)證。 根據(jù)上面關(guān)于 TFTP 的介紹,實(shí)現(xiàn) TFTP 需要搭建一個(gè) TFTP 的服務(wù)器,iMX6 開發(fā)板當(dāng)做 客戶端。 1.1 搭建服務(wù)器 打開虛擬機(jī) Ubuntu 終端,進(jìn)入 root 用戶,輸入“sudo apt-get install xinetd”命令 安裝 xinetd,安裝完成如下圖。(如果報(bào)錯(cuò),注意檢查
[單片機(jī)]
迅為iMX6開發(fā)板-<font color='red'>Linux</font>系統(tǒng)-TFTP使用文檔
ARM-Linux S5PV210 UART驅(qū)動(dòng)(4)----串口驅(qū)動(dòng)初始化過(guò)程
對(duì)于S5PV210 UART驅(qū)動(dòng)來(lái)說(shuō),主要關(guān)心的就是drivers/serial下的samsung.c和s5pv210.c連個(gè)文件。 由drivers/serial/Kconfig:   config SERIAL_SAMSUNG     depends on ARM && PLAT_SAMSUNG   config SERIAL_S5PV210     depends on SERIAL_SAMSUNG && (CPU_S5PV210 || CPU_S5P6442) && SERIAL_SAMSUNG_CONSOLE 可以看出模塊的依賴關(guān)系,先加載samsung.ko,然后再加載s5pv210.ko。 所以串
[單片機(jī)]
ARM-<font color='red'>Linux</font> S5PV210 UART<font color='red'>驅(qū)動(dòng)</font>(4)----串口<font color='red'>驅(qū)動(dòng)</font>初始化過(guò)程
linux-2.6.38到tiny6410的移植手冊(cè)(連載4)__USB設(shè)備(U盤,攝像頭,wifi)
今天來(lái)講講一些USB設(shè)備(U盤,攝像頭,wifi)的驅(qū)動(dòng)吧,它的特點(diǎn)是內(nèi)核已經(jīng)帶非常完善的驅(qū)動(dòng)了, 我們需要的就是配置而已,和很少的修改而已。 一、首先是U盤得支持。 1、vi arch/arm/mach-s3c64xx/mach-mini6410.c 124行增加 /* Initializes OTG Phy. to output 48M clock */ void s3c_otg_phy_config(int enable) { u32 val; if (enable) { __raw_writel(0x0, S3C_PHYPWR); /* Power up */ val = _
[單片機(jī)]
<font color='red'>linux</font>-2.6.38到tiny6410的移植手冊(cè)(連載4)__USB設(shè)備(U盤,攝像頭,wifi)
Linux驅(qū)動(dòng):s3c2440 lcd 驅(qū)動(dòng)分析》
一,前言 s3c2440 lcd 驅(qū)動(dòng)分析,涉及到的內(nèi)容有,LCD圖像顯示原理、s3c2440的LCD控制器的操作、LCD驅(qū)動(dòng)使用平臺(tái)總線-設(shè)備-驅(qū)動(dòng)模型的實(shí)例、LCD相關(guān)參數(shù)的設(shè)置、fb字符設(shè)備驅(qū)動(dòng)實(shí)例、framebuffer的注冊(cè)和管理、以及一次LCD顯示的完整過(guò)程分析。 二,LCD原理和硬件分析 2.1 LCD原理解析 SDRAM:在SDRAM中申請(qǐng)了一塊連續(xù)的內(nèi)存作為L(zhǎng)CD顯示數(shù)據(jù)的存儲(chǔ),叫做顯存(framebuffer)。 LCD控制器:LCD控制器通過(guò)硬件電路和LCD屏連接。 LCD屏:作為一個(gè)外設(shè)通過(guò)硬件電路和MCU(引腳配置為L(zhǎng)CD引腳)連接。 圖像在LCD屏上顯示,可以看成是LCD控制器先從顯存中取出一幀圖
[單片機(jī)]
Linux I2C總線控制器驅(qū)動(dòng)(S3C2440)
s3c2440的i2c控制器驅(qū)動(dòng)(精簡(jiǎn)DIY),直接上代碼,注釋很詳細(xì): #include linux/kernel.h #include linux/module.h #include linux/i2c.h #include linux/init.h #include linux/time.h #include linux/interrupt.h #include linux/delay.h #include linux/errno.h #include linux/err.h #include linux/platform_device.h #include linux/pm_runtime.h #include linu
[單片機(jī)]
s3c2440 移值新內(nèi)核 linux-4.1.36
arm-linuxgcc version 4.3.2 經(jīng)過(guò)試驗(yàn),最高可以編譯到 linux-4.1.36 ,在高的版本會(huì)有錯(cuò)誤 ,可能是 GCC 編譯器版本較低造成。 解壓比較麻煩還要裝一個(gè) xz xz -d ,我是用 7z-zip 在電腦上解好,傳 tar 上去解包。 修改 makefile ARCH ?= arm CROSS_COMPILE ?= arm-linux- find -name *24*_defconfig 查找出來(lái)有的配置項(xiàng) ./arch/arm/configs/s3c2410_defconfig ./arch/arm/configs/mini2440_defconfig s3c2410_defco
[單片機(jī)]
s3c2440 移值新內(nèi)核 <font color='red'>linux</font>-4.1.36
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 吴忠市| 错那县| 无棣县| 册亨县| 扶沟县| 都安| 麻阳| 高州市| 克什克腾旗| 凤台县| 北京市| 临泉县| 内江市| 外汇| 东阳市| 绵阳市| 隆化县| 五河县| 屯昌县| 新绛县| 长岛县| 上林县| 九龙县| 化隆| 南京市| 青州市| 徐州市| 大洼县| 海城市| 浙江省| 大同县| 汾阳市| 临夏县| 灵寿县| 深水埗区| 密山市| 大石桥市| 沿河| 论坛| 同仁县| 东乡族自治县|