打印
[Kinetis]

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

[复制链接]
1342|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者

#include "main.h"

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

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



int main(void)
{
          
    /* 初始化Delay */
    DelayInit();
       
    /* 使用简易初始化初始化PTB端口的22引脚作为IO使用 设置为推挽输出模式 */
   // GPIO_QuickInit(HW_GPIOB, 22, kGPIO_Mode_OPP);
       
          //使用结构体初始化
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.instance = HW_GPIOB;
    GPIO_InitStruct.mode = kGPIO_Mode_OPP;
    GPIO_InitStruct.pinx = GPIO_Pin_22;
    GPIO_Init(&GPIO_InitStruct);
       
    GPIO_QuickInit(HW_GPIOB, GPIO_Pin_21, kGPIO_Mode_OPP);
          GPIO_QuickInit(HW_GPIOE, GPIO_Pin_26, kGPIO_Mode_OPP);
       
          //PTA上拉输入
          GPIO_QuickInit(HW_GPIOA,GPIO_Pin_4, kGPIO_Mode_IPU);
          
          GPIO_QuickInit(HW_GPIOC,GPIO_Pin_6, kGPIO_Mode_IPU);
          
    /* 控制PTB端口的21引脚输出低电平 */
    GPIO_WriteBit(HW_GPIOB,GPIO_Pin_22, 1);
    GPIO_WriteBit(HW_GPIOB, 21, 0);
          GPIO_SetBit(HW_GPIOE, GPIO_Pin_26);
               
    while(1)
    {
                        if(GPIO_ReadBit(HW_GPIOA,GPIO_Pin_4) == 0)
                        {
                                DelayMs(5);
                                if(GPIO_ReadBit(HW_GPIOA,GPIO_Pin_4) == 0)
                                GPIO_ResetBit(HW_GPIOE, GPIO_Pin_26);
                        }
                        if(GPIO_ReadBit(HW_GPIOC,GPIO_Pin_6) == 0)
                        {
                                DelayMs(5);
                                if(GPIO_ReadBit(HW_GPIOC,GPIO_Pin_6) == 0)
                                GPIO_SetBit(HW_GPIOE, GPIO_Pin_26);
                        }
      /* 翻转引脚电平 原来是低变成高 原来是高变成低 */
                          GPIO_ToggleBit(HW_GPIOB,  GPIO_Pin_21);
                          GPIO_ToggleBit(HW_GPIOB, 22);
        DelayMs(500);
    }
}

使用特权

评论回复
地板
64xiaodian| | 2016-1-27 11:23 | 只看该作者

楼主,能否把库文件讲解,方便了解一下整个系统:handshake

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

354

帖子

2

粉丝