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
文章评论(0条评论)
登录后参与讨论