本帖最后由 673402618 于 2015-7-13 09:29 编辑
板子收到快十天了,前几天一直在做一个蓝牙小车,没抽出时间来折腾板子。
这是我第一次用飞思卡尔的mcu,之前已经习惯了用stm32的库进行开发,以为这次要用寄存器开发,会有很大难度。上周在群里听说用 kinetis SDK 库开发上手比较简单,于是决定用库。
Kinetis SDK的核心是一组包含两层构架的驱动代码:硬件抽象层(HAL)和外设驱动层(Peripheral Driver),我用的是外设驱动层库。
库的说明文档还是很丰富的,虽说是英文版, 但难度也不高,可以理解。
下面是我的操作步骤 一、建立工程模板
参考freescale的demo工程建立一个工程模板, 把与KL26Z相关的文件都提取出来,
二、使用库函数点亮板子上的LED灯,产生呼吸灯效果
板子上LED部分的原理图 
2.在头文件中定义IO口名称
enum _gpio_pins
{
kGpioLED1 = GPIO_MAKE_PIN(GPIOB_IDX, 0x12), //PTB18
kGpioLED2 = GPIO_MAKE_PIN(GPIOB_IDX, 0x13), // PTB19
kGpioLED3 = GPIO_MAKE_PIN(GPIOD_IDX, 0x01), //PTD01
};
3.使用库函数初始化GPIO
void GPIO_Init()
{
gpio_output_pin_user_config_t outputPins[] = {
{
.pinName = kGpioLED1,
.config.outputLogic = 0,
.config.slewRate = kPortFastSlewRate,
.config.driveStrength = kPortHighDriveStrength,
},
{
.pinName = kGpioLED2,
.config.outputLogic = 0,
.config.slewRate = kPortFastSlewRate,
.config.driveStrength = kPortHighDriveStrength,
},
{
.pinName = kGpioLED3,
.config.outputLogic = 0,
.config.slewRate = kPortFastSlewRate,
.config.driveStrength = kPortHighDriveStrength,
},
{
.pinName = GPIO_PINS_OUT_OF_RANGE,
}
};
GPIO_DRV_Init(NULL,outputPins);
}
4.呼吸灯效果
void LED_Blink()
{
int x,y;
GPIO_DRV_TogglePinOutput(kGpioLED1);
for(x=1000;x>0;x--)
{
for(y=1000;y>0;y--)
{
if(x>y)
{
GPIO_DRV_SetPinOutput(kGpioLED2);
GPIO_DRV_ClearPinOutput(kGpioLED1);
GPIO_DRV_ClearPinOutput(kGpioLED3);
}
else
{
GPIO_DRV_SetPinOutput(kGpioLED3);
GPIO_DRV_SetPinOutput(kGpioLED1);
GPIO_DRV_ClearPinOutput(kGpioLED2);
}
}
}
for(x=1000;x>0;x--)
{
for(y=1000;y>0;y--)
{
if(x<y)
{
GPIO_DRV_SetPinOutput(kGpioLED2);
GPIO_DRV_ClearPinOutput(kGpioLED1);
GPIO_DRV_ClearPinOutput(kGpioLED3);
}
else
{
GPIO_DRV_SetPinOutput(kGpioLED3 );
GPIO_DRV_SetPinOutput(kGpioLED1);
GPIO_DRV_ClearPinOutput(kGpioLED2);
}
}
}
}
5.下载程序 Max clock达到了10MHz,比之前用的stlink 的4MHz快了一倍多,听说jlink速度更快,下周准备把板子上调试器的固件换成Jlink_OpenSDA试试速度怎么样。
三、效果
没有录视频, 就用手机拍了两个GIF, 可以看出效果
二楼发文件
|