而我们所提供的方案和他们不同,我们是通过流式驱动的方式用MDK开发C++程序。用户程序采用标准的流式驱动接口进行相关调用。并且流式驱动提供事件机制,底层和上层可以通过事件进行交互。
另外就是为MDK C++程序提供了丰富的.NET Micro Framework PAL层接口,可以让用户随心所欲地开发出功能强大的程序。
和上一篇文章介绍的功能函数相比,又扩展了一些比较实用的功能,比如I2C、SPI接口,底层中断打开关闭,HAL_COMPLETION、HAL_CONTINUATION类似底层多线程支持和中断程序用户态执行,功能函数由原来的61个扩展到了80个。具体功能接口如下:
下面简单介绍一下驱动开发步骤。
2、 选定MCU类型,可以根据实际硬件选择STM32F103/STM32F207/STM32F407/STM32F405。
3、 输入对应的平台宏定义
4、 配置针对具体硬件所设置的离散加载配置文件
凌霄智能终端的离散加载文件的内容如下:
LR_IROM10x08010000 0x00010000 { ; load region size_region
ER_IROM1 0x08010000 0x00010000 { ; load address = execution address
.ANY (+RO)
}
RW_IRAM1 0x20000400 0x00002000 { ; RWdata
.ANY (+RW +ZI)
}
表示程序加载的位置在0x08010000,大小为64K,RAM空间为0x20000400起始的8K空间。
注:用户驱动除了这部分RAM可用外,还可以直接通过接口提供的内存操作函数,分配堆上的内存。
5、 编写用户驱动(C/C++),下面是一个综合示例,用到了GPIO操作、显示操作、时钟中断操作和事件通知。
6、 编译用户驱动,生成UserDriver.bin文件。
选定UserDriver.bin文件然后直接部署即可。
注:如果这不是初次部署运行用户驱动,需要先终止当前程序的执行,否则部署会出现问题(凌霄103的设备需要先部署应用,然后再部署用户驱动)。
8、 用户程序编写(C#)
9、 用户程序写好后,直接在VS 2010中编译执行。
硬件运行效果图(如下):
---------------------------------------------------------------------------------------------
<a href="http://weibo.com/1804832611?s=6uyXnP"></a>