热度 18
2014-12-29 17:23
1122 次阅读|
0 个评论
Microsoft .NET Micro Framework 移植开发笔记 6 之 电容触摸按键实验 好久没更新笔记了,主要最近比较忙,目前在搞 ARM9 S3C2416 的 MF 移植,就把 STM32 的暂时搁了,前两天 S3C2416 的移植有一个比较大的进展。就抽空来继 STM32 的移植。这次的移植比较有突破性,之前我移植和做的实验都是基于 MF 官方本身就支持的外设。假如官方没有支持的外设驱动怎样办,如果完全可以由自己来定义外设驱动接口,然后让 C# 代码来调用,这样的话 MF 的实用性大大提高,我们完全可以自己让 MF 来实现我们所要的外设,不再受官方的限制。 今天终于实现这一个功能,这里我移植封装了原子哥的电容触摸按键实验,完全是由自己定义的驱动接口,然后把这接口都封装成 DLL 文件,在 VS 里增加引用就可以调用这些接口。 namespace LLFeng { public class TPAD { public TPAD(); public static void TIM5_CH2_Cap_Init( ushort arr, ushort psc); public static ushort TPAD_Get_MaxVal( uint n); public static ushort TPAD_Get_Val(); public static ushort TPAD_Init( uint systick); public static void TPAD_Reset(); public static ushort TPAD_Scan( uint mode); } } 先看接口函数,完全是封装了原子哥的 TPAD ,没做其它的改动。 电容触摸按键实验的原理大家都清楚,原子哥的教程中都有详细的说明。其实用 MF 的固件的话,你压根就不需要去了解底层是什么原理,你只要知道接口函数的参数值跟返回值,知道函数怎么用就可以了。 再看 C# 代码: 跟原子哥实验中的操作一样先调用 LLFen.TPAD.TPAD_Init() 函数进行初始化,然后通过判断 LLFeng.TPAD.TPAD_Scan() 函数的返回值来知道电容触摸键是否被下,按下一次, led1 的状态就取反一次。点调试,把代码部署到战舰开发板,看到红色 LED 灯在闪烁的时候,用手触摸一次触摸区域,绿色的 LED 就会亮,再触摸一次就会灭掉。 到目前为止,距上次的固件更新,这次的固件,有三个修改: 1、 MF 系统节拍的时钟已经改成用 Systick 来驱动,官方的是要占用三个定时器来驱动,改用 Systick 就可以把这三个定时空出来。 2、 封装了蜂鸣器直接底层驱动的接口,直接调用 LLFeng.Beep.beepon() 和 LLFeng.Beep.beepoff() 这两个函数就可以直接的让蜂鸣器开跟关。 3、 封装了电容触摸驱动的接口,让 MF 在战舰开发板上也可以用电容触摸。 EDN的附件上传有点问题,传不上来,固件跟C#工程文件,大家直接进开源电子论坛去下载:http://openedv.com/posts/list/44511.htm