“MK22 Core:项目移植笔记”的版本间的差异
(→从Arduino移植代码到mbed上的注意事项) |
|||
(未显示2个用户的10个中间版本) | |||
第1行: | 第1行: | ||
− | + | ==概述== | |
− | + | *'''[[Microduino-Core MK22/zh]]'''是基于NXP的MK22FN512VLH12的一个M4架构Core,本文实现了基于mbed平台的一些应用开发移植工作。 | |
− | + | *本文档是在移植'''[[开源电驱机器小车CUBE/zh]]'''、'''[[开源LED点阵屏幕/zh]]'''、'''[[开源平衡车/zh]]'''、'''[[开源WiFi气象站系统/zh]]'''基础上实现。 | |
− | * | + | *除了平衡车,其他3个均可工作在MK22上了。平衡车,已有立起来的趋势,但还未真正立起来。 |
− | * | ||
− | |||
− | * | ||
+ | ==开发步骤== | ||
+ | *1、进入[https://developer.mbed.org mbed 主页],注册。 | ||
+ | *2、注册完毕,回到[https://developer.mbed.org 主页],点击右上角的“Compiler”即可进入在线编译模式。 | ||
+ | *3、程序编辑完毕后,点击“Compile”即可在编译、链接成功后自动下载bin文件。 | ||
+ | *4、下载JFlash:https://www.segger.com/jflash.html | ||
+ | *5、用JFlash把bin下载到MK22中运行。 | ||
− | + | ==程序代码== | |
+ | *Cube小车:'''[[开源电驱机器小车CUBE/zh]]''' | ||
+ | https://developer.mbed.org/users/beian10/code/CubeFine/ | ||
+ | *点阵屏幕:'''[[开源LED点阵屏幕/zh]]''' | ||
+ | |||
+ | *平衡车:'''[[开源平衡车/zh]]''' | ||
+ | |||
+ | *WIFI气象站:'''[[开源WiFi气象站系统/zh]]''' | ||
+ | |||
+ | ==从Arduino移植代码到mbed上的注意事项== | ||
+ | *关于mbed的学习指南这里不再赘述,网上已有很多学习资料。 | ||
+ | *可以看一下这里的'''[[File:mBed学习指南.pdf]]''' | ||
+ | |||
+ | '''注意事项: | ||
+ | * Arduino的程序入口是在.ino文件中的setup、loop函数,mbed的程序入口是在main.cpp文件里的main函数。在main函数中用while(true)实现Arduino中的loop函数功能。 | ||
+ | * Arduino中的pinMode需改为mbed的AnalogIn、AnalogOut、DigitalOut、DigitalIn等类的实例 | ||
+ | * Arduino中用analogWrite来实现PWM的输出,在mbed中需要替换为PwmOut类的实例。在mbed中,PWM的输出频率、宽度,都是可以通过API动态设置的 | ||
+ | * Arduino中用Serial 类实现串口输出,在mbed中需使用Serial类的实例替代。 | ||
+ | * Arduino中的millis、micros函数,在mbed中需使用Timer类的实例替代。另外,在mbed中,Timeout、Ticker两个类,作用是分别实现定时单次操作和定时重复操作。 | ||
+ | * Arduino中的pgm_read_byte函数是从flash中读取数据,在mbed中直接操作uint8_t指针即可,不再需要单独的函数从flash读数据。 | ||
+ | * Arduino中用Wire进行I2C的操作,在mbed上需要改为I2C类的实例。 | ||
+ | * AM2321的取温度间隔得大于2s,否则,i2c会不工作了。 | ||
+ | * SimpleTimer有个bug,会导致快速调用两次定时函数。例如,setInterval(4000, sendCH4),每4秒执行一次sendCH4函数,但实际运行时发现sendCH4的执行间隔会小于4秒钟。 | ||
+ | '''有问题可给我发邮件:lixianyu@toweer.com,一起讨论mbed的世界 | ||
+ | |||
+ | * 关于管脚定义,可先clone mbed源码到本地:https://github.com/mbedmicro/mbed.git | ||
+ | **在目录hal\targets\hal\TARGET_Freescale\TARGET_KSDK2_MCUS\TARGET_K22F\TARGET_FRDM下面的PinNames.h文件里有对MK22的所有管脚的定义。 | ||
+ | |||
+ | |||
+ | *mbed已经实现了对MK22这个TARGET的实现。''' | ||
+ | |||
+ | |||
+ | *mbed已经对如下厂商的MCU提供支持,进入TARGET_Freescale目录,可看到mbed已实现了对如下具体MCU的实现: | ||
+ | [[File:2016-07-05T03-06-03.051Z.png]] | ||
+ | |||
+ | *未列出的MCU,目前还不能使用mbed平台。 |
2016年7月11日 (一) 01:58的最新版本
概述
- Microduino-Core MK22/zh是基于NXP的MK22FN512VLH12的一个M4架构Core,本文实现了基于mbed平台的一些应用开发移植工作。
- 本文档是在移植开源电驱机器小车CUBE/zh、开源LED点阵屏幕/zh、开源平衡车/zh、开源WiFi气象站系统/zh基础上实现。
- 除了平衡车,其他3个均可工作在MK22上了。平衡车,已有立起来的趋势,但还未真正立起来。
开发步骤
- 1、进入mbed 主页,注册。
- 2、注册完毕,回到主页,点击右上角的“Compiler”即可进入在线编译模式。
- 3、程序编辑完毕后,点击“Compile”即可在编译、链接成功后自动下载bin文件。
- 4、下载JFlash:https://www.segger.com/jflash.html
- 5、用JFlash把bin下载到MK22中运行。
程序代码
- Cube小车:开源电驱机器小车CUBE/zh
https://developer.mbed.org/users/beian10/code/CubeFine/
- 点阵屏幕:开源LED点阵屏幕/zh
- 平衡车:开源平衡车/zh
- WIFI气象站:开源WiFi气象站系统/zh
从Arduino移植代码到mbed上的注意事项
- 关于mbed的学习指南这里不再赘述,网上已有很多学习资料。
- 可以看一下这里的文件:MBed学习指南.pdf
注意事项:
- Arduino的程序入口是在.ino文件中的setup、loop函数,mbed的程序入口是在main.cpp文件里的main函数。在main函数中用while(true)实现Arduino中的loop函数功能。
- Arduino中的pinMode需改为mbed的AnalogIn、AnalogOut、DigitalOut、DigitalIn等类的实例
- Arduino中用analogWrite来实现PWM的输出,在mbed中需要替换为PwmOut类的实例。在mbed中,PWM的输出频率、宽度,都是可以通过API动态设置的
- Arduino中用Serial 类实现串口输出,在mbed中需使用Serial类的实例替代。
- Arduino中的millis、micros函数,在mbed中需使用Timer类的实例替代。另外,在mbed中,Timeout、Ticker两个类,作用是分别实现定时单次操作和定时重复操作。
- Arduino中的pgm_read_byte函数是从flash中读取数据,在mbed中直接操作uint8_t指针即可,不再需要单独的函数从flash读数据。
- Arduino中用Wire进行I2C的操作,在mbed上需要改为I2C类的实例。
- AM2321的取温度间隔得大于2s,否则,i2c会不工作了。
- SimpleTimer有个bug,会导致快速调用两次定时函数。例如,setInterval(4000, sendCH4),每4秒执行一次sendCH4函数,但实际运行时发现sendCH4的执行间隔会小于4秒钟。
有问题可给我发邮件:lixianyu@toweer.com,一起讨论mbed的世界
- 关于管脚定义,可先clone mbed源码到本地:https://github.com/mbedmicro/mbed.git
- 在目录hal\targets\hal\TARGET_Freescale\TARGET_KSDK2_MCUS\TARGET_K22F\TARGET_FRDM下面的PinNames.h文件里有对MK22的所有管脚的定义。
- mbed已经实现了对MK22这个TARGET的实现。
- mbed已经对如下厂商的MCU提供支持,进入TARGET_Freescale目录,可看到mbed已实现了对如下具体MCU的实现:
文件:2016-07-05T03-06-03.051Z.png
- 未列出的MCU,目前还不能使用mbed平台。