打印
[资料分享与下载]

IAR编译器+库函数学习

[复制链接]
2290|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
李香兰|  楼主 | 2015-11-9 21:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、编译环境

1.IAR版本至少是7.1 (由于我们才用的库版本很高,所以希望大家重新安装IAR编辑器)
2.一个很重要的事情就是你用什么下载的问题!!!
     我建议采用CMSIS DAP 下载(没有PE麻烦,我个人是这么认为的)
    那我们就用CMSIS DAP 了!但是你一定要注意:
                            IAR有个BUG,就是CMSIS DAP是坏的,用他是没法下载的!
    这个是消除BUG的:
二、库文件

           当时做小车时就有用KL26芯片的,所以我果断找了一下智能车那边的资料,太棒了,山外大哥居然将KL26做成和K60相似的库了,所有的都是开源的,给我们开发者提供了不少帮助。

         山外攻城略地一天攻破KL26:
注意一点,在编译学习时首先需要更改配置,因为山外的是256KB的,我们的是128KB的,要注意哦!


山外攻城略地之一天攻破KL26 V5.2(IAR6.7版本).rar

988.79 KB

消除IAR中BUG.zip

19.05 KB

相关帖子

沙发
李香兰|  楼主 | 2015-11-9 21:10 | 只看该作者
下面是配置文件
1.上面我也提到了要更新IAR,如果不更新是没法使用的
2.不要跑题,咱们开始第一项打开IAR,首先先编译下看看有没有错误


看来是没有错误

3.查看一下配置  Options

需要重新查找文件MKL26Z128xxx4

使用特权

评论回复
板凳
李香兰|  楼主 | 2015-11-9 21:11 | 只看该作者
4.看一下C/C++的 Preprocessor         低版本的是不存在的,只有高于7.1版本才可以看到这些东西!注意当你出现错误的时候要想到更新IAR

5.找到Linker选项,更改为    $PROJ_DIR$\config files\128KB_Pflash.icf


6.打开Debugger    将Driver改为CMSIS DAP下载


6.还是Debugger   打开Download选项   从IAR中找到KLxxx128K.board  复制到里面,然后替换掉。看图吧还是,快说不清楚了




这是flash board  :

使用特权

评论回复
地板
李香兰|  楼主 | 2015-11-9 21:12 | 只看该作者
放进去



7确保CMSIS DAP是SWD下载



好了现在可以下载了!!哈哈,终于完事了!下面开始学习该库函数的功能了!

KL26_128KB.zip

333 Bytes

使用特权

评论回复
5
李香兰|  楼主 | 2015-11-9 21:13 | 只看该作者
三、GPIO模块
/********************该程序是由噬猎者编写************************************/
void main()
{
          int i=2;//更改i切换不同模式
        int data=0;
        DisableInterrupts; //关闭中断使能
        gpio_init(PTB18,GPO,1);//IO口初始化
        
        
        while(1)
        {
          switch(i)
          {
                  case 0:
                          GPIO_TURN(PTB18);
                        DELAY_MS(500);
                        break;
                  case 1:        
                              PTB18_OUT=1;
                          DELAY_MS(500);
                        PTB18_OUT=0;
                          DELAY_MS(500);
                        break;
                 case 2:
                        GPIO_SET_NBIT(1,PTB18,1);
                        DELAY_MS(500);
                        GPIO_SET_NBIT(1,PTB18,0);
                        DELAY_MS(500);
                        break;
                  case 3:
                          data = GPIO_GET(PTB18);
                        if(data==0)
                                 PTB18_OUT=1;
                        else
                                  PTB18_OUT=0;
                        DELAY_MS(500);
                        break;
               
          }
               
        }

  
}
/******************************************************************************/



/****************************GPIO学习指南************************************/
/*************************** 编辑:噬猎者 ************************************
我的喜好,一般不采用函数形式,采用宏定义形式更加迅速,不过这里也指出来很多不得已用函数的。
【1.gpio_init(PTxn ptxn, uint8_t dir, uint8_t state)//GPIO初始化
        PTx = PTA,PTB,PTC,PTD,PTE//端口名
        n   = 0-31        //管脚号
        dir =    //输入输出配置
                    GPI         = 0,                          //定义管脚输入方向      GPIOx_PDDRn里,0表示输入,1表示输出
                    GPO         = 1,                          //定义管脚输出方向

                    GPI_DOWN    = 0x02,                       //输入下拉              PORTx_PCRn需要PE=1,PS=0
                    GPI_UP      = 0x03,                       //输入上拉              PORTx_PCRn需要PE=1,PS=1
                    GPI_PF      = 0x10,                       //输入,带无源滤波器,滤波范围:10 MHz ~ 30 MHz 。不支持高速接口(>=2MHz)  0b10000           Passive Filter Enable
                    GPI_DOWN_PF = GPI_DOWN | GPI_PF ,         //输入下拉,带无源滤波器
                    GPI_UP_PF   = GPI_UP   | GPI_PF ,         //输入上拉,带无源滤波器

                    GPO_HDS     = 0x41,                        //输出高驱动能力   0b100 0001    High drive strength
                    GPO_SSR     = 0x05,                        //输出慢变化率          0b101    Slow slew rate
                    GPO_HDS_SSR = GPO_HDS | GPO_SSR,           //输出高驱动能力、慢变化率
                //带滤波器的可用于按键,不过也得消抖
        state = 0,1  //引脚状态(输入的模式填0就可以了)
例子:gpio_init(PTB19,GPO,1);//PTB19初始化为输出模式,输出高电平。
        
【2.GPIO_SET(PTxn,data)  //设置引脚状态
        PTx  = PTA,PTB,PTC...//端口名
        n      = 0-31        //管脚号
        x      =  0,1   //引脚电平
例子:GPIO_SET(PTA18,1);//PTA18输出高电平

【3.GPIO_TURN(PTxn)        //翻转引脚电平
        PTx  = PTA,PTB,PTC...//端口名
        n      = 0-31        //管脚号
例子:GPIO_TURN(PTA18);//翻转PTA18引脚电平

【4.data =  GPIO_GET(PTxn);        //获取引脚电平
        PTx  = PTA,PTB,PTC...//端口名
        n      = 0-31        //管脚号
例子:data = GPIO_GET(PTA18);//读取PTA18的引脚电平

【5.对GPIO进行位操作:
        GPIO_SET_NBIT(NBIT,PTxn,data)        //设定n位电平
        GPIO_DDR_NBIT(NBIT,PTxn,ddr)        //设置n位输入输出模式
        GPIO_GET_NBIT(NBIT,PTxn)         //读取n位电平

【6.GPIO_DDR(PTxn,ddr)        //设置输入输出状态
        ddr = 输入输出配置  


【7.最常用的IO电平
        PTxn_OUT = 1         PTxn输出高电平
        data = PTxn_IN        读取PTxn输入的电平

****************************************************************************/






/******************************延时函数*************************************/
/***************************************************************************
VCAN_MK60_conf.h
#if  0
#include "MKL_lptmr.h"//定时器延时
#define     DELAY()         lptmr_delay_ms(500)
#define     DELAY_MS(ms)    lptmr_delay_ms(ms)
#define     DELAY_US(us)    lptmr_delay_us(us)
#elif   0
#include "MKL_pit.h"
#define DELAY()         pit_delay_ms(PIT1,500)
#define DELAY_MS(ms)    pit_delay_ms(PIT1,ms)
#define DELAY_US(us)    pit_delay_us(PIT1,us)
#else
#include "MKL_SysTick.h"//系统时钟
#define DELAY()         systick_delay_ms(500)
#define DELAY_MS(ms)    systick_delay_ms(ms)
#define DELAY_US(us)    systick_delay_us(us)

也就是说要想更改延时就直接去 VCAN_MK60_conf.h,换一下选择函数即可
DELAY()       //500ms延时
DELAY_MS(ms)  //ms级延时
DELAY_US(us)  //us级延时
****************************************************************************/

使用特权

评论回复
6
李香兰|  楼主 | 2015-11-9 21:14 | 只看该作者
程序供大家参考:

1.GPIO.zip

1.7 MB

使用特权

评论回复
7
FSL_TICS_ZJJ| | 2015-11-10 10:09 | 只看该作者
感谢楼主的资料分享!

使用特权

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

本版积分规则

26

主题

248

帖子

0

粉丝