在线时间613 小时
UID252169
注册时间2010-12-5
NXP金币0
TA的每日心情 | 开心 2019-2-14 16:49 |
---|
签到天数: 296 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 4473
- 最后登录
- 2020-4-14
|
本帖最后由 zhjb1 于 2017-4-6 23:08 编辑
这次 得到的54114与网友们测试的不一样,没有那些附加板子,只有主板,一开始下载软件和环境不太对口。这块开发板确实长相像Arduino,引脚逻辑标注几乎一样。重新到官网搜索下载开发板的资料进行实验。没有显示屏的附板,只能自己寻摸一块够他用的LCD了。
搜官网,下载了与这款开发板相关的资料和手册,MANLEY公司提供了中文说明书,可以较为简单地学习资料了。
首先创建开发平台,为了省事,直接用下载的proj_mdk或proj_iar解压后进行开发。
非常遗憾的是下载的开发包中的东西与到手的开发板不是完全一样的东西,结果仔细的对比开发板和手册以及sch的pdf文档发现,要是不作较大的改动恐怕做任何实验都会碰钉子的,仅就LED点亮这么个简单的东西几乎就是失败,因为不一样。看图13,14,看board.h:
#define BOARD_LED_RED_GPIO GPIO
#define BOARD_LED_RED_GPIO_PORT 0U
#define BOARD_LED_RED_GPIO_PIN 29U PIO0_29
#define BOARD_LED_GREEN_GPIO GPIO
#define BOARD_LED_GREEN_GPIO_PORT 1U
#define BOARD_LED_GREEN_GPIO_PIN 10U PIO0_10
#define BOARD_LED_BLUE_GPIO GPIO
#define BOARD_LED_BLUE_GPIO_PORT 1U
#define BOARD_LED_BLUE_GPIO_PIN 9U PIO0_9
显然只有一个是正确的,为了防止烧开发板,采用静态测量的方法——用万用表测试开发板上的8只LED,还有3只是连在11U35,我们不关心他。最后的结果让人大跌眼镜,实际的管脚连接符合图13——SCH图是正确的,8只LED连接逻辑如下,实际的板上印字对应的PIO口罗列如下:
PIO0_25_LED4 PIO0_26_LED5 PIO0_29_LED6 PIO0_30_LED7——这4个是绿色的LED
PIO0_15_LED8 PIO0_19_LED9 PIO0_21_LED10 PIO0_22_LED11——这4个是红色的LED
因此必须更改board.h文档的LED定义,改动1个如下,一共写了到4个,LED1定义如下:
#define BOARD_LED1_GPIO GPIO
#define BOARD_LED1_GPIO_PORT 0U
#define BOARD_LED1_GPIO_PIN 15U
以下依葫芦画瓢定义到LED4。还需要修改LED、ON、OFF、TOGGLE函数,仅以LED1为例如下:
#define LED1_INIT(output) GPIO_PinInit(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT, BOARD_LED1_GPIO_PIN,&(gpio_pin_config_t){kGPIO_DigitalOutput, (output)})
#define LED1_ON() GPIO_ClearPinsOutput(BOARD_LED1_GPIO, BOARD_LED1GPIO_PORT,1U << BOARD_LED1_GPIO_PIN)
#define LED1_OFF() GPIO_SetPinsOutput(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT,1U << BOARD_LED1_GPIO_PIN)
#define LED1_TOGGLE() GPIO_TogglePinsOutput(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT,1U << BOARD_LED1_GPIO_PIN)
LED2~LED4依葫芦画瓢就可以了。经过这些修改我们就可以开始来做lED闪亮的实验。打开原来的main.cpp,下边是更改完的代码:
#include "board.h"
#include "fsl_debug_console.h"
#include "fsl_gpio.h"
#include "fsl_usart.h"
#include "pin_mux.h"
#include <stdbool.h>
//Delayer
void delay(int counter){
volatile uint32_t i,j;
for(i=0;i<counter;++i){for(j=0;j<i;j++){;}}
}
//Main function
int main(void){
//CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
BOARD_InitPins();
BOARD_BootClockHSRUN();
BOARD_InitDebugConsole();
SystemCoreClockUpdate();
CLOCK_EnableClock(kCLOCK_Gpio0);
gpio_pin_config_t config={kGPIO_DigitalOutput,LOGIC_LED_OFF,};
GPIO_PinInit(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT, BOARD_LED1_GPIO_PIN,&(gpio_pin_config_t){kGPIO_DigitalOutput,(LOGIC_LED_OFF)});
GPIO_PinInit(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PORT, BOARD_LED2_GPIO_PIN,&(gpio_pin_config_t){kGPIO_DigitalOutput,(LOGIC_LED_ON)});
GPIO_PinInit(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PORT, BOARD_LED3_GPIO_PIN,&(gpio_pin_config_t){kGPIO_DigitalOutput,(LOGIC_LED_OFF)});
GPIO_PinInit(BOARD_LED4_GPIO, BOARD_LED4_GPIO_PORT, BOARD_LED4_GPIO_PIN,&(gpio_pin_config_t){kGPIO_DigitalOutput,(LOGIC_LED_ON)});
while(true){
GPIO_TogglePinsOutput(BOARD_LED1_GPIO, BOARD_LED1_GPIO_PORT, 1U << BOARD_LED1_GPIO_PIN);
GPIO_TogglePinsOutput(BOARD_LED2_GPIO, BOARD_LED2_GPIO_PORT, 1U << BOARD_LED2_GPIO_PIN);
GPIO_TogglePinsOutput(BOARD_LED3_GPIO, BOARD_LED3_GPIO_PORT, 1U << BOARD_LED3_GPIO_PIN);
GPIO_TogglePinsOutput(BOARD_LED4_GPIO, BOARD_LED4_GPIO_PORT, 1U << BOARD_LED4_GPIO_PIN);
delay(1000);
}
}
代码敲完,编译报一个错是在2个.h文档中的描述:kNONE_to_NONE = 0x80000000U,报错,我想这个地址应该是对的,而不是报错的“int”,没有理他,下载后的结果见照片16。这块开发板的实验可能会比较困难,因为仅仅LED就错了一大堆,其他的呢?不敢想象,走着瞧吧,慢慢来吧。只能对设计者的粗心大意略表不满。
此实验是在Keil5.22下,下载安装了驱动补丁包完成的。项目设置见图11,12。很想丢一句话,还是给吃了回去。哎!?
|
-
13-SCH的PDF文档
-
14-MANLEY开发板说明书
-
15-LED轮闪示意照片
-
11-项目设置1
-
12-项目设置2
|