【STM32 .Net MF开发板学习-02】GPIO测试
前段时间我借用市面上现成的Corex-M3开发板,打造了最低价的.Net Micro Framework开发板(参见《免费发放firmwave,打造史上最低价.Net MF开发板》),在此期间也写了一个最简单的应用示例(参见《【STM32 .Net MF开发板学习-01】Hello world》),没有想到是,在硬件开发板上却出现了一些波折,耽搁了很长时间,所以第二个应用示例直到今天才开始写。
什么波折呢?
在淘宝网上搜索相关的开发板,光想搜索最便宜的了,忽视了LCD尺寸,选了一个2.8的,而我手头上的开发板却是3.2的,二者显示驱动芯片不同。问店老板说是Ili9325,其实却是4531,此外还少焊了一个贴片电阻,造成USB不能用。还有宣称的RAM 512k,其实只有256k,以上种种造成了一些用户直到昨天才能正常运行.Net Micro Framework(不过,有些用户的开发板截止到现在还不正常,不知道还有哪方面的硬件问题)。可见山寨的东东,其质量,其开发者的责任心都有待提高。所以这里建议用户如果不太在意开发板的成本,可以选择我推荐的第二种开发板。
详细内容请参见:http://space.cnblogs.com/group/topic/40303/
示例很简单,主要是按钮和LED灯的测试,红牛和EM-STM3210E的按钮和LED有所不同,所以有针对性的对二者pin都做了定义(这些信息,你可以直接看开发板相对应的原理图,很容易就可以获得相关Pin脚的定义)。
功能就是 LED每隔1s就亮灭一次,按相关按键,则从调试口输出按键信息。
核心代码如下:
#define Redox //红牛开发板
using System;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using System.Threading;
namespace GPIOTest
{
public class Program
{
enum GPIO_NAMES
{
PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15,
PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15,
PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15,
PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15,
PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15,
PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15,
PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15
};
public static void Main()
{
#if Redox
//wakeup - PA0 tamper- PC13 user1-PA8 user2- PD3
Cpu.Pin[] Button_Pins = new Cpu.Pin[] { (Cpu.Pin)GPIO_NAMES.PA0, (Cpu.Pin)GPIO_NAMES.PC13, (Cpu.Pin)GPIO_NAMES.PA8, (Cpu.Pin)GPIO_NAMES.PD3};
//LED
Cpu.Pin[] LED_Pins = new Cpu.Pin[] { (Cpu.Pin)GPIO_NAMES.PF6, (Cpu.Pin)GPIO_NAMES.PF7, (Cpu.Pin)GPIO_NAMES.PF8, (Cpu.Pin)GPIO_NAMES.PF9, (Cpu.Pin)GPIO_NAMES.PF10 };
#else
//user - PG8 up - PG13 left - PG14 right - PG15 down - PD3 sel - PG7
Cpu.Pin[] Button_Pins = new Cpu.Pin[] { (Cpu.Pin)GPIO_NAMES.PG8, (Cpu.Pin)GPIO_NAMES.PG13, (Cpu.Pin)GPIO_NAMES.PG14, (Cpu.Pin)GPIO_NAMES.PG15, (Cpu.Pin)GPIO_NAMES.PD3, (Cpu.Pin)GPIO_NAMES.PG7 };
//LED
Cpu.Pin[] LED_Pins = new Cpu.Pin[] { (Cpu.Pin)GPIO_NAMES.PF6, (Cpu.Pin)GPIO_NAMES.PF7, (Cpu.Pin)GPIO_NAMES.PF8, (Cpu.Pin)GPIO_NAMES.PF9 };
#endif
InterruptPort[] button = new InterruptPort[Button_Pins.Length];
for (int i = 0; i < button.Length; i++)
{
button[i] = new InterruptPort(Button_Pins[i], false, Port.ResistorMode.PullDown, Port.InterruptMode.InterruptEdgeBoth);
button[i].OnInterrupt += new NativeEventHandler(Program_OnInterrupt);
}
OutputPort[] led = new OutputPort[LED_Pins.Length];
for (int i = 0; i < led.Length; i++)
{
led[i] = new OutputPort(LED_Pins[i], false);
}
while (true)
{
for (int i = 0; i < led.Length; i++)
{
led[i].Write(!led[i].Read());
}
Thread.Sleep(1000);
}
}
static void Program_OnInterrupt(uint data1, uint data2, DateTime time)
{
Debug.Print(data1.ToString() + ":" + data2.ToString());
}
}
}
超级终端显示的信息如下:
下一个示例就是介绍图形绘制方面的了(非官方WPF),敬请关注。
-----------------------------------------------------------------------------------------
【低价开发板】http://item.taobao.com/item.htm?id=7117999726
源码下载:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/GPIOTest.rar
文章参考: 《.Net Micro Framework 快速入门》
中文讨论组:http://space.cnblogs.com/group/MFSoft/
【STM32 .Net MF开发板学习-02】GPIO测试相关推荐
- 【STM32 Net MF开发板学习-27】GPRS通信实现
GPRS是General Packet Radio Service(通用分组无线服务技术)的简称,它是GSM移动电话用户可用的一种移动数据业务.GPRS和以往连续在频道传输的方式不同,是以封包(Pac ...
- 【STM32 .Net MF开发板学习-17】Wifi遥控智能小车
恰好以前购买的一个PDA含Wifi功能,所以与其用PC通过Zigbee控制智能小车,不如用PDA来控制,这样更为方便,不过由于目前.NET MF开发板不直接支持Wifi功能,所以我们也只好间接控制了, ...
- 【STM32 .NET MF开发板学习-29】摄像头蓝牙图像远程获取
目前生产串口摄像头的厂家有很多,每家的通信协议也不同,所以针对不同的摄像头都必须编写相对应的摄像头驱动程序. 最早做医疗项目的时候,开发过一款串口摄像头的驱动,不过是配合TinyIOs而使用,并没有把 ...
- 【STM32 .Net MF开发板学习-28】中文显示(WPF方式)
在<为Cortex-M3打造轻量级TinyGUI>中我们提到.NET MF的官方图形库为WPF,考虑到内存的限制和CPU的性能,所以我们开发了TinyGUI库,并在<TinyGUI绘 ...
- 【STM32 NET MF开发板学习-29】摄像头蓝牙图像远程获取
分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 目前生产串口摄像头 ...
- 【STM32 .Net MF开发板学习-11】步进电机控制(非PWM模式)
选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用 uln2003芯片的驱动板,其控制时序图如下: 四相八拍:A->AB->B ->BC - ...
- 【STM32 Net MF开发板学习-11】步进电机控制(非PWM模式)
选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用uln2003芯片的驱动板,其控制时序图如下: 四相八拍:A->AB->B ->BC -& ...
- 【STM32 Net MF开发板学习-19】DHT11温湿度传感器通信(上)
前段时间开发远程医疗系统(Dr.Cloud)就曾用到过温湿度传感器,不过当时考虑到集成难度,选了一个RS485接口的传感器,该传感器实现了Modbus Rtu Slave的功能,只要客户程序实现Mod ...
- 【STM32 .Net MF开发板学习-19】DHT11温湿度传感器通信(上)
前段时间开发远程医疗系统(Dr.Cloud)就曾用到过温湿度传感器,不过当时考虑到集成难度,选了一个RS485接口的传感器,该传感器实现了Modbus Rtu Slave的功能,只要客户程序实现Mod ...
最新文章
- 【每日一算法】删除排序数组中的重复项
- idea中自定义修改jdk源码,加注释
- linux neo4j 服务器,如何在linux服务器上配置Neo4j · Digital World
- VC++ 获取系统时间的方法汇总
- python3精要(51)-json
- java map映射_【Java】Map 映射接口 概述
- java工程师应该学习的知识点
- arraylist线程安全吗_Java中的集合和线程安全
- Sublime text3装入插件Anaconda
- java telnet 交换机_华为交换机 telnet 配置(极简版)
- 通过调用外部exe的方法实现c#调用java
- Metabase在linux二次开发编译环境搭建(之一---下载文件)
- sw如何缩放装配体_solidworks提高大型装配体的展示、设计效率
- tensorflow 学习(一)- 搭建一个三层的神经网络
- R语言时间序列ARIMA新手教程
- SLAM十四讲 ch4 Sophus库安装避雷和使用
- SAP CO组织结构及概念
- 【转】Android开发工具--android-studio-bundle-141.2288178
- moviepy音视频剪辑:TextClip不支持中文字符以及OSError: magick.exe: unable to read font 仿宋_GB2312.ttf的解决办法
- 第十一周作业-必做4
热门文章
- unity 编辑器软件报错 相关
- 基于PHP的餐饮公司展示网站及点餐系统设计与实现
- rw,rwd,rws是什么
- 【产品】产品原型设计工具 Axure 和 Mockplus 对比
- 网线哪几根是发送数据,哪几根是接收数据的?
- vba 批量生成条形图代码
- ocsp和ldap 区别_《脑梗塞ocsp分型和治疗》.ppt
- win10无法装载iso文件_iso镜像安装失败无法安装Windows10怎么办?
- Linux5.9下DHCP服务器的配搭建
- mysql exists 效率_Mysql之exists和inner join效率问题(1)