Mini2440开发板PWM驱动与测试程序简要分析

发布者:Huanle666最新更新时间:2024-06-19 来源: elecfans关键字:Mini2440  PWM驱动  测试程序 手机看文章 扫描二维码
随时随地手机看文章

        if(tcsetattr(STDIN_FILENO,TCSANOW, &newt) < 0) {

                  perror('set terminal');

                  exit(1);

        }

 

        ch = getchar();

 

        // restore termial setting

        if(tcsetattr(STDIN_FILENO,TCSANOW,&oldt) < 0) {

                  perror('restore the termial setting');

                  exit(1);

        }

        return ch;

}

 

static int fd = -1;

static void close_buzzer(void);

static void open_buzzer(void)

{

        fd = open('/dev/pwm', 0);

        if (fd < 0) {

                  perror('open pwm_buzzer device');

                  exit(1);

        }

 

        // any function exit call will stop the buzzer

        atexit(close_buzzer);

}

 

static void close_buzzer(void)

{

        if (fd >= 0) {

                  ioctl(fd, PWM_IOCTL_STOP);

                  close(fd);

                  fd = -1;

        }

}

 

static void set_buzzer_freq(int freq)

{

        // this IOCTL command is the key to set frequency

        int ret = ioctl(fd, PWM_IOCTL_SET_FREQ, freq);

        if(ret < 0) {

                  perror('set the frequency of the buzzer');

                  exit(1);

        }

}

static void stop_buzzer(void)

{

        int ret = ioctl(fd, PWM_IOCTL_STOP);

        if(ret < 0) {

                  perror('stop the buzzer');

                  exit(1);

        }

}

 

int main(int argc, char **argv)

{

        int freq = 1000 ;

       

        open_buzzer();

 

        printf( 'nBUZZER TEST ( PWM Control )n' );

        printf( 'Press +/- to increase/reduce the frequency of the BUZZERn' ) ;

        printf( 'Press 'ESC' key to Exit this programnn' );

       

       

        while( 1 )

        {

                  int key;

 

                  set_buzzer_freq(freq);

                  printf( 'tFreq = %dn', freq );

 

                  key = getch();

 

                  switch(key) {

                  case '+':

                            if( freq < 20000 )

                                    freq += 10;

                            break;

 

                  case '-':

                            if( freq > 11 )

                                    freq -= 10 ;

                            break;

 

                  case ESC_KEY:

                  case EOF:

                            stop_buzzer();

                            exit(0);

 

                  default:

                            break;

                  }

        }

}

通过调用ioctl函数实现控制PWM的频率以及关闭PWM.


[1] [2]
关键字:Mini2440  PWM驱动  测试程序 引用地址:Mini2440开发板PWM驱动与测试程序简要分析

上一篇:linux-2.6.32在mini2440开发板上移植 按键驱动程序移植
下一篇:mini2440 Norflash驱动移植过程

推荐阅读最新更新时间:2024-11-09 09:17

MDK中的调试脚本分析
准备写一个简单的裸机程序放mini2440里面跑,看到芯片手册有2中启动方式,1.从Nor Flash启动 2.从Nand Flash中启动。断断续续弄了几天始终无法烧录进去,想起平时自己工作中调试程序都是往内存里面直接烧录运行,除非调试的功能可能涉及到Flash的操作,就不用这种方式。既然我是简单的跑裸机,也就控制下GPIO,那么先直接弄内存里面好了。先看S3C2440A内存地址映射: 现在我只关注内存所映射的地址,上图看出SDRAM映射到了BANK6,BANK7。其实地址为0x3000,000。我的mini2440板子上的2块内存是2个32M Byte的,也就是说64M Byte。
[单片机]
MDK中的调试脚本分析
Sqlite移植到mini2440
一、开发环境: Mini2440, Linux_2.6.32.2内核, Fedora 9 arm-linux-gcc-4.3.3 二、移植步骤 下载源码 http://www.sqlite.org/sqlite-autoconf-3070701.tar.gz 为3.7.7.1版 1.解压数据库源文件并进入解压后的目录,如下: tar -zxvf sqlite-autoconf-3070701.tar.gz cd sqlite-autoconf-3070701 2.创建一个目录build并进入该目录,用于在这个目录中进行交叉编译,如下: mkdir build cd build 3.在build目录中运行sqlite-au
[单片机]
MSP432(Keil5)——6.PWM驱动
本次实验在5个IO扣上产生了PWM波,频率计算方法已经放在了代码注释里面,请大家耐心食用。 pwm.c #include pwm.h /* Timer_A PWM Configuration Parameter */ /* fre(Hz) = clock / div / period */ /* 48000000/20/48000= 50Hz*/ /* 通道一 */ Timer_A_PWMConfig pwmConfig_c1 = { TIMER_A_CLOCKSOURCE_SMCLK, TIMER_A_CLOCKSOURCE_DIVIDER_20, /* period */ 48000,
[单片机]
MSP432(Keil5)——6.<font color='red'>PWM</font><font color='red'>驱动</font>
【嵌入式】用Qt给ARM9(mini2440)添加软件键盘,添加动态链接库
    以下四个文件可以到快盘中嵌入式的文件夹KeyPad中下载     其他的动态添加链接库的方法是一样的     账号:sharefromfox@163.com 密码:3.1415926     以下四个文件可以到快盘中嵌入式的文件夹KeyPad中下载     其他的动态添加链接库的方法是一样的     账号:sharefromfox@163.com 密码:3.1415926     第一步:     先修改五个文件的使用权限,最好都是777     (sudo)Chomd 777 +(文件名)     将libQSoftKeypad.so.1.0.0库文件拷贝到/usr/local/lib
[单片机]
【嵌入式】用Qt给ARM9(<font color='red'>mini2440</font>)添加软件键盘,添加动态链接库
U-boot 在 mini2440-S3C2440 上的移植(4):U-boot第二阶段代码:修改初始化代码
编译U-boot给mini2440时,要编译出能在ARM平台上使用的可执行文件-bin,首先要在ubuntu 中安装交叉编译工具链,因为我使用的是友善之臂的开发板,所以我使用的已经制作好的工具链,当然也可以自己制作工具链:如基于GCC和glibc制作工具链,可以使用cross tools编译; 我使用的工具链的版本是arm-linux-gcc-4.3.3版本,下载地址:下载地址 1.在pc端下载好以后,将压缩包用xftp传输到Ubuntu;当然也可以用其他软件上传;上传后把它放在根目录下的/usr/local文件夹中新建一个arm文件夹,然后把压缩包复制到这个文件夹;注意先建好文件夹再上传,可以减少很多工作量; 一定要上传压缩包,
[单片机]
U-boot 在 mini2440-S3C2440 上的移植(4):U-boot第二阶段代码:修改初始化代码
linux-2.6.32在mini2440开发板上移植 添加ADC驱动程序
添加ADC驱动程序 编者:由于内核没有支持S3C2440的ADC驱动,在这里增加ADC驱动。友善的手册对这个介绍的还算相当详细,所以直接按照手册进行。里面的代码也有详细的注释。ADC驱动属于字符型设备,在这里以杂项设备也有的翻译为混杂设备,进行实现。 1 、关于S3C2440 的ADC 和触摸屏接口 Linux-2.6.32.2 内核并没有提供支持S3C2440 的ADC 驱动程序,因此我们自行设计了一个,这个驱动比较简单,属于字符设备,它位于drivers/char 目录下,驱动程序的文件名为:mini2440_adc.c。在S3C2440 芯片中,AD 输入和触摸屏接口使用共同的A/D 转换器,见2440 芯片手册第16
[单片机]
linux-2.6.32在<font color='red'>mini2440</font>开发板上移植 添加ADC<font color='red'>驱动</font>程序
linux2.6.32.2 mini2440平台移植-- 激活 RTC 驱动
RTC的英文全称是Real-Time Clock,翻译过来是实时时钟芯片. RTC是PC主板上的晶振及相关电路组成的时钟电路的生成脉冲,RTC经过8254电路的变频产生一个频率较低一点的OS(系统)时钟TSC,系统时钟每一个cpu周期加一,每次系统时钟在系统初起时通过RTC初始化。8254本身工作也需要有自己的驱动时钟(PIT)。 1.2.1 在初始化文件中加入 RTC 设备结构 Linux-2.6.32.2 内核对 2440 的 RTC 驱动已经十分完善了,但并未在 mach-mini2440.c 中的设备集中加入它,因此并没有被激活,加入 RTC 结构体如下红色字体: ;在 mini2440 设备集中加入 RTC
[单片机]
u-boot-2011.03在mini2440/micro2440上的移植 结束语及资源下载
8.1 其他 (1)支持使用向上的箭头显示上一条命令 include/configs/micro2440.h #define CONFIG_CMDLINE_EDITING #ifdef CONFIG_CMDLINE_EDITING #undef CONFIG_AUTO_COMPLETE #else #define CONFIG_AUTO_COMPLETE #endif (2)使用自己的环境变量 common/env_common.c文件中的default_environment 数组,格式如: b= nand read 0x30008000 0x60000 0x300000;bootm 0x30008000 /0 8.2
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved