本帖最后由 风子 于 2015-11-18 10:47 编辑
最近倒腾ST的板子,把K64给搁下了,实在有点对不起它,于是决定今天宠幸她一下。
事实上这东西之前已经着实花了我不少时间,作为一个新手,觉得实在是不容易,倒腾好几个晚上到深夜,都没有什么进展,感觉比我当初学ST的时候难太多了,,,。
不得不吐槽FSL的那个KSDK库,什么乱七八糟的玩意,文件组织,函数代码,简直无法忍受,各种乱七八糟,我先后尝试过3次自己把文件复制出来建立工程模板,花了很多时间,最后都以失败告终。。。最后还是不得不编译好lib库直接使用,,,即使是这样,也试了两次才成功,,不知道是不是我太笨了,,反正,各种不顺利。
最后在经历了多次失败之后,终于成功建立了工程,算是搭建好了开发环境,鉴于新手,对飞思卡尔芯片和这个库都不熟悉,就用写好的例程来修改了,于是使用了KSDK_1.2.0\examples\frdmk64f\driver_examples\gpio这个例子,把相关的文件和board文件通通都复制过来,修改,添加代码:
- // Define gpio output pin config structure LED1.
- gpio_output_pin_user_config_t outputPin[] = {
- {
- .pinName = kGpioLED1,
- .config.outputLogic = 0,
- #if FSL_FEATURE_PORT_HAS_SLEW_RATE
- .config.slewRate = kPortFastSlewRate,
- #endif
- #if FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH
- .config.driveStrength = kPortHighDriveStrength,
- #endif
- },
-
- {
- .pinName = kGpioLED2,
- .config.outputLogic = 0,
- #if FSL_FEATURE_PORT_HAS_SLEW_RATE
- .config.slewRate = kPortFastSlewRate,
- #endif
- #if FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH
- .config.driveStrength = kPortHighDriveStrength,
- #endif
- }, {
- .pinName = kGpioLED3,
- .config.outputLogic = 0,
- #if FSL_FEATURE_PORT_HAS_SLEW_RATE
- .config.slewRate = kPortFastSlewRate,
- #endif
- #if FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH
- .config.driveStrength = kPortHighDriveStrength,
- #endif
- },
- {
- .pinName = GPIO_PINS_OUT_OF_RANGE,
- }
- };
复制代码- GPIO_DRV_SetPinOutput(kGpioLED1);
- GPIO_DRV_SetPinOutput(kGpioLED2);
- GPIO_DRV_SetPinOutput(kGpioLED3);
- while(1)
- {
- GPIO_DRV_ClearPinOutput(kGpioLED1);
- softdelay(0x1ffffff);
- GPIO_DRV_SetPinOutput(kGpioLED1);
- GPIO_DRV_ClearPinOutput(kGpioLED2);
- softdelay(0x1ffffff);
- GPIO_DRV_SetPinOutput(kGpioLED2);
- GPIO_DRV_ClearPinOutput(kGpioLED3);
- softdelay(0x1ffffff);
- GPIO_DRV_SetPinOutput(kGpioLED3);
- GPIO_DRV_ClearPinOutput(kGpioLED1);
- GPIO_DRV_ClearPinOutput(kGpioLED2);
- softdelay(0x1ffffff);
- GPIO_DRV_SetPinOutput(kGpioLED1);
- GPIO_DRV_ClearPinOutput(kGpioLED2);
- GPIO_DRV_ClearPinOutput(kGpioLED3);
- softdelay(0x1ffffff);
- GPIO_DRV_SetPinOutput(kGpioLED2);
- GPIO_DRV_ClearPinOutput(kGpioLED1);
- GPIO_DRV_ClearPinOutput(kGpioLED3);
- softdelay(0x1ffffff);
- GPIO_DRV_ClearPinOutput(kGpioLED1);
- GPIO_DRV_ClearPinOutput(kGpioLED2);
- GPIO_DRV_ClearPinOutput(kGpioLED3);
- softdelay(0x1ffffff);
- GPIO_DRV_SetPinOutput(kGpioLED1);
- GPIO_DRV_SetPinOutput(kGpioLED2);
- GPIO_DRV_SetPinOutput(kGpioLED3);
- softdelay(0x1ffffff);
- // if(isButtonPress)
- // {
- // PRINTF(" SW is pressed \r\n");
- // // Reset state of button.
- // isButtonPress=false;
- // }
- }
-
- }
- void softdelay(uint32_t n)
- {
- while(n)
- n--;
- }
复制代码
只贴出了我修改的部分,由于实在没找到KSDK的延时函数在哪里,自己写了个软件延时将就一下。
下面是程序运行效果:就是各种不同颜色的LED等在变化
转换成gif后好像有些颜色看不出来了,本来应该有7中颜色变化才对。
附近是完整工程,可以作为工程模板使用,如果有人需要的话。
传了半天传不成功,直接放网盘了:https://pan.baidu.com/s/1i397LWh
|