您当前的位置:五五电子网电子知识单片机-工控设备51单片机PDIUSBD12 USB 驱动程序 正文
PDIUSBD12 USB 驱动程序

PDIUSBD12 USB 驱动程序

点击数:7166 次   录入时间:03-04 11:52:37   整理:http://www.55dianzi.com   51单片机
void get_key_task(void)
{
while(1)
{
OS_ENTER_CRITICAL();
key_buf[0] = ZLG7290_GetKey();
OS_EXIT_CRITICAL();
OSWait(K_TMO, 1);
if(key_buf[0] == 0)
{
continue;
}
OS_ENTER_CRITICAL();
key_buf[1] = ZLG7290_GetKey();
OS_EXIT_CRITICAL();
if(key_buf[0] != key_buf[1])
{
OS_ENTER_CRITICAL();
D12_WriteEndpoint(3, 1, &key_buf[0]);
OS_EXIT_CRITICAL();
}

}

}
五.实验示例程序简析
本由于驱动程序中使用了USB51s.lib 库,故关于该库的使用方法详见实验仪配套光盘
中的《 PDIUSBD12 固件编程指南 》和书《 PDIUSBD12 固件编程与驱动开发 》。这里仅
仅就叙述如何在Small RTOS51 下编写D12 USB 驱动程序。
由于对PDIUSBD12 的操作是一种不能重入的操作,所以必须要在这一次操作完成后才
能进行下一次对PDIUSBD12 的操作。因此,对PDIUSBD12 器件的操作采用了一个信号量
(D12_use)来管理。这种信号量管理的方法就像有很多个门共用一把钥匙,必须一次只能
开一个门,而开这个门的先后则由任务的优先级来决定。
在驱动中使用了2 个信号量,其含义如下:
􀁺 D12_use: 不为0,表示PDIUSBD12 处于空闲状态,可以使用;为0,则表示
PDIUSBD12 正在使用中。不允许其他任务对PDIUSBD12 进行操作。此信号量在
创建时被初始化为1。
􀁺 D12_isr: 不为0,表示检测到PDIUSBD12 产生的USB 中断请求;为0,表示
没有USB 中断请求或者USB 中断请求已被执行处理。,此信号量在创建时被初始
化为0。
控制马达转速的方法很多,PWM(脉宽调制)方式是比较常见的一种,实现较简单并
且效果好。在DP-51PRO.NET 中可以实现PWM 控制马达转速实验,其马达控制电路参见
综合实验7 电机实验.。
本例程中,PWM 波形由定时器1 的周期性中断产生。其代码实现见程序清单5.4。定
时器1 中断服务函数(INTT1)对全局变量COUNTER 进行自增计数,并与PWMH 进行比
较,根据比较结果控制P1_4(波形输出引脚)输出电平的高低,从实现PWM 的输出。马达的
转速与PWM 波形中的高电平之占空比成正比。
六.程序演示
由于本示例程序需要跟PC 机进行数据通讯,故必须与PC 机相关软件配合使用才能实
现所有的功能。上位机软件可以使用配套光盘中的usb 调试助手(1.2 版)(有关usb 调试助
手的使用请见其帮助文件),该软件用于向实验仪发送控制数据和接收发上来的按键值数据。
使用usb 调试助手软件之前还必须安装D12 驱动程序方可正常使用。
首先将USB_D12.hex 文件下载到实验仪中,运行 单片机 中的程序。单片机将配置
PDIUSBD12 并进行USB 枚举,USB D12PARK 模块上的LED 灯将闪烁几次。、两、三秒后,
若USB 枚举成功,模块上的LED 将常亮,表示USB 连接正常。此时打开usb 调试助手,
选择名称为Philips PDIUSBD12 Smart Evaluation Board 的设备,设置接收端点和发送端点都
为端点1,设置接收和发送管道大小为16 字节。按下启动按扭,这样便与实验仪建立的USB
连接。向发送区填入1 个字节的数据,然后发送到实验仪,这样便可实现马达的变速。按下
实验仪中D7 区的按键,在PC 上便可接收到该按键的键值。



上一页  [1] [2] 


本文关键字:程序  51单片机单片机-工控设备 - 51单片机