[Kinetis] 基于超核库的Keil工程建立及GPIO操作

[复制链接]
 楼主| Roderman_z 发表于 2016-1-24 19:35 | 显示全部楼层 |阅读模式
超核V2.5库挺好用的,直接弄过来,官方给的模块感觉文件夹太乱了,所以准备直接创建工程,

工程建立挺简单的,只需要把头文件、启动文件和CMSIS库、底层驱动库拷贝过来,然后建立工程,

Keil工程设置如图


C/C++下面

Define: MK64F12 RAVEN DEBUG

然后是 Misc Cotrols : --c99     //使用99标准

就可以添加自己的代码了,
系统时钟在system_MK64F12.c中修改CLOCK_SETUP



整个工程建立好了之后开始GPIO操作 :


先上原理图,按键和RGB LED的:



开始调用库来驱动LED和读取按键状态

超核2.5库两种GPIO操作方式,一种快速操作直接调用函数,一种是类似STM32进行结构体初始化
 楼主| Roderman_z 发表于 2016-1-24 19:36 | 显示全部楼层
初始化输入和输出


编译通过J-Link方式下载程序,运行!
 楼主| Roderman_z 发表于 2016-1-24 19:37 | 显示全部楼层

  1. #include "main.h"

  2. /* 修改主频 请修改 CMSIS标准文件 system_MKxxxx.c 中的 CLOCK_SETUP 宏 */

  3. /* GPIO 工作模式 */
  4. /*
  5. *         @arg kGPIO_Mode_IFT :悬空输入
  6. *         @arg kGPIO_Mode_IPD :下拉输入
  7. *         @arg kGPIO_Mode_IPU :上拉输入
  8. *         @arg kGPIO_Mode_OOD :开漏输出 如果不清楚这2种输出的区别请 百度..
  9. *         @arg kGPIO_Mode_OPP :推挽输出
  10. */



  11. int main(void)
  12. {
  13.           
  14.     /* 初始化Delay */
  15.     DelayInit();
  16.        
  17.     /* 使用简易初始化初始化PTB端口的22引脚作为IO使用 设置为推挽输出模式 */
  18.    // GPIO_QuickInit(HW_GPIOB, 22, kGPIO_Mode_OPP);
  19.        
  20.           //使用结构体初始化
  21.     GPIO_InitTypeDef GPIO_InitStruct;
  22.     GPIO_InitStruct.instance = HW_GPIOB;
  23.     GPIO_InitStruct.mode = kGPIO_Mode_OPP;
  24.     GPIO_InitStruct.pinx = GPIO_Pin_22;
  25.     GPIO_Init(&GPIO_InitStruct);
  26.        
  27.     GPIO_QuickInit(HW_GPIOB, GPIO_Pin_21, kGPIO_Mode_OPP);
  28.           GPIO_QuickInit(HW_GPIOE, GPIO_Pin_26, kGPIO_Mode_OPP);
  29.        
  30.           //PTA上拉输入
  31.           GPIO_QuickInit(HW_GPIOA,GPIO_Pin_4, kGPIO_Mode_IPU);
  32.           
  33.           GPIO_QuickInit(HW_GPIOC,GPIO_Pin_6, kGPIO_Mode_IPU);
  34.           
  35.     /* 控制PTB端口的21引脚输出低电平 */
  36.     GPIO_WriteBit(HW_GPIOB,GPIO_Pin_22, 1);
  37.     GPIO_WriteBit(HW_GPIOB, 21, 0);
  38.           GPIO_SetBit(HW_GPIOE, GPIO_Pin_26);
  39.                
  40.     while(1)
  41.     {
  42.                         if(GPIO_ReadBit(HW_GPIOA,GPIO_Pin_4) == 0)
  43.                         {
  44.                                 DelayMs(5);
  45.                                 if(GPIO_ReadBit(HW_GPIOA,GPIO_Pin_4) == 0)
  46.                                 GPIO_ResetBit(HW_GPIOE, GPIO_Pin_26);
  47.                         }
  48.                         if(GPIO_ReadBit(HW_GPIOC,GPIO_Pin_6) == 0)
  49.                         {
  50.                                 DelayMs(5);
  51.                                 if(GPIO_ReadBit(HW_GPIOC,GPIO_Pin_6) == 0)
  52.                                 GPIO_SetBit(HW_GPIOE, GPIO_Pin_26);
  53.                         }
  54.       /* 翻转引脚电平 原来是低变成高 原来是高变成低 */
  55.                           GPIO_ToggleBit(HW_GPIOB,  GPIO_Pin_21);
  56.                           GPIO_ToggleBit(HW_GPIOB, 22);
  57.         DelayMs(500);
  58.     }
  59. }

64xiaodian 发表于 2016-1-27 11:23 | 显示全部楼层

楼主,能否把库文件讲解,方便了解一下整个系统:handshake
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

354

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

41

主题

354

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部