查看: 2497|回复: 6

[报名/申请] 【KL26Z申请】+KL26Z学习

[复制链接]

该用户从未签到

2

主题

48

帖子

0

注册会员

Rank: 2

积分
105
最后登录
2015-11-28
发表于 2015-11-10 21:28:38 | 显示全部楼层 |阅读模式
硬件连接
  通过开发板的原理图知道,LED0、LED1、LED2为共阳极接法,LED0、LED1、LED2分别与PTB18、PTB19、PTD1相连,当这几个脚为低电平时,LED亮。
3.JPG (37.05 KB, 下载次数: 0)
下载附件  保存到相册
2015-9-19 10:50 上传





file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image002.jpg
软件编程
1 编程思路及方法
2.使能系统时钟
3.设置IO口功能
  1)是否为复用引脚
  2)上拉OR下拉、输入OR输出、默认为高电平还是低电平(普通引脚)
4.在while(1)大循环中编写程序
5 具体驱动文件和子函数
2.JPG (11.09 KB, 下载次数: 0)
下载附件  保存到相册
2015-9-19 10:50 上传



file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image004.jpg
其中common文件夹存放的文件是每个工程所必要的程序,APP文件夹放的是main.c和全部头文件includes.h,Dry文件夹是自己添加外设的.c和.h文件夹,注意将新建文件夹的路径添加到KEIL。
6.system_MKL25Z4.c
这个文件中主要包含两个函数SystemInit()和SystemCoreClockUpdate(),其中SystemInit()在程序开始已经执行,对于系统时钟初始化只需要调用SystemCoreClockUpdate()函数即可。
7. MKL25Z4.h
这个头文件定义了个个模块的寄存器。
8.MKL_gpio.h
1)PORT配置
  • #define MKL_PORTA               A
  • #define MKL_PORTB               B
  • #define MKL_PORTC               C
  • #define MKL_PORTD               D
  • #define MKL_PORTE               E
  • #defineIO_DIS_IRQ            0x0
  • #defineIO_DMA_RISE_IRQ       0x1
  • #defineIO_DMA_FALL_IRQ       0x2
  • #defineIO_DMA_EITHER_IRQ     0x3
  • #defineIO_LOW_LEVEL_IRQ      0x8
  • #defineIO_HIGH_LEVEL_IRQ     0xc
  • #defineIO_RISE_EDGE_IRQ      0x9
  • #defineIO_FALL_EDGE_IRQ      0xa
  • #defineIO_EITHER_EDGE_IRQ    0xb




2)PORT时钟配置函数(PTO端口号)
  • PORT_ENABLE_CLK(PTO)
  • PORT_DISABLE_CLK(PTO)



   
3)IO口功能配置函数
  • IO_FUN_SEL(PTO,BIT,FUN)  //PT0端口号、BIT引脚、FUN功能选择




        
4)GPIO配置
  • #definePDDR(PTO)     GPIO##PTO##_PDDR
  • #definePSOR(PORT)    GPIO##PORT##_PSOR
  • #definePCOR(PORT)    GPIO##PORT##_PCOR
  • #definePTOR(PORT)    GPIO##PORT##_PTOR
  • #definePDOR(PORT)    GPIO##PORT##_PDOR
  • #definePDIR(PORT)    GPIO##PORT##_PDIR



5)GPIO按位输入输出控制
  • #defineGPIO_DDR_OUTPUT(POT,BIT)        PDDR(POT)|= (1 << BIT)
  • #defineGPIO_DDR_INPUT(POT,BIT)         PDDR(POT)&= ~(1 << BIT)


6)GPIO按PORT输入输出控制
  • #definePORT_DDR_OUTPUT(POT,BITS)       PDDR(POT)|= BITS
  • #definePORT_DDR_INPUT(POT,BITS)        PDDR(POT)&= ~BITS


7)GPIO按位置1、置0、翻转控制
  • #defineGPIO_SET(POT,BIT)               PSOR(POT)= (1 << BIT)
  • #defineGPIO_CLR(POT,BIT)               PCOR(POT)= (1 << BIT)
  • #defineGPIO_TOGGLE(POT,BIT)            PTOR(POT)= (1 << BIT)


8)GPIO按PORT置1、置0、翻转控制
  • #definePORT_SET(POT,BITS)              PSOR(POT)= BITS
  • #definePORT_CLR(POT,BITS)              PCOR(POT)= BITS
  • #definePORT_TOGGLE(POT,BITS)           PTOR(POT)= BITS



9)GPIO输入值读取
  • #defineGPIO_GET_VALUE(POT,BIT)        ~(~(PDIR(POT) & (1 << BIT)))
  • #definePORT_GET_VALUE(POT)             PDIR(POT)



9.includes.h
1自定义数据结构
  • typedef unsigned char    BOOLEAN;    /* 布尔变量   */
  • typedef unsigned char     INT8U;  /* 无符号8位整型变量  */
  • typedef signed  char    INT8S;    /* 有符号8位整型变量 */
  • typedef unsigned short   INT16U;  /* 无符号16位整型变量           */
  • typedef signed  short  INT16S;    /* 有符号16位整型变量           */
  • typedef unsigned long   INT32U;   /* 无符号32位整型变量           */
  • typedef signed  long  INT32S;    /* 有符号32位整型变量           */
  • typedef unsigned long long INT64U;  /* 无符号64位整型变量           */
  • typedef signed long longINT64S;  /* 有符号64位整型变量           */
  • typedef float FP32;    /* 单精度浮点数(32位长度)     */
  • typedef double FP64;    /* 双精度浮点数(64位长度)     */
  • typedef unsigned char uint8;  /* 无符号8位整型变量            */
  • typedef unsigned short int uint16;/* 无符号16位整型变量           */
  • typedef unsigned long int uint32;/* 无符号32位整型变量    */
  • typedef char  int8;/* 有符号8位整型变量            */
  • typedef short int int16;      /* 有符号16位整型变量           */
  • typedef int  int32;      /* 有符号32位整型变量           */
  • typedefvolatile int8  vint8;   /*  8bits */
  • typedefvolatile int16 vint16;  /* 16 bits */
  • typedefvolatile int32   vint32;    /* 32 bits */
  • typedefvolatile uint8  vuint8;      /* 8 bits */
  • typedefvolatile uint16  vuint16;       /* 16 bits */
  • typedefvolatile uint32 vuint32;     /* 32 bits*/




2)Standard header files标准头文件
  • #include<stdio.h>
  • #include<string.h>
  • #include<ctype.h>
  • #include<stdlib.h>
  • //externvoid UART0_IRQHandler(void);
  • //externvoid UART1_IRQHandler(void);
  • //externvoid UART2_IRQHandler(void);



3)CMSIS 头文件(不用管)
4)Common's headerfiles  公共头文件
  • #include"MKL25Z4.h"
  • #include"system_MKL25Z4.h"
  • /** * * * * * * 暂时使用* * * * * * * * */
  • #include<core_cm0.h>                                                  /* CMSIS File of Cortex-M0      */



5)Driver's headerfiles  驱动头文件
  • #include"MKL_uart.h"
  • #include"MKL_gpio.h"



6)User's header files 用户头文件
  • #include"main.h"




10 主函数编程
1.延时函数,暂时使用光盘给的,应该可以利用systick编写精确的延时函数
  • voidmyDelay (INT32U ulTime)
  • {
  •     INT32U i;
  •     i = 0;
  •     while (ulTime--) {
  •         for (i = 0; i < 5000; i++);
  •     }
  • }



估计是一次是5ms。
11.intmain()编程
1)系统时钟初始化SystemCoreClockUpdate();
2)开启PORTB、PORTD时钟
  • SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK
  •                  | SIM_SCGC5_PORTB_MASK
  •                  | SIM_SCGC5_PORTC_MASK
  •                  |SIM_SCGC5_PORTD_MASK
  •                   | SIM_SCGC5_PORTE_MASK );
  • PORT_ENABLE_CLK(MKL_PORTB);
  • PORT_ENABLE_CLK(MKL_PORTD);




file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image006.jpg
PORTABCDE的时钟使能在这个寄存器上

3)设置PORTB18,PORTB19,PORTD1为普通引脚
  • IO_FUN_SEL(MKL_PORTB,18,1);                                             IO_FUN_SEL(MKL_PORTB,19,1);
  • IO_FUN_SEL(MKL_PORTD,1,1);




4)设置PORTB18,PORTB19,PORTD1为输出
  • GPIO_DDR_OUTPUT(MKL_PORTB,18);                                          GPIO_DDR_OUTPUT(MKL_PORTB,19);
  • GPIO_DDR_OUTPUT(MKL_PORTD,1);




5)设置PORTB18,PORTB19,PORTD1为默认高电平
  • GPIO_SET(MKL_PORTB,18);
  • GPIO_SET(MKL_PORTB,19);
  • GPIO_SET(MKL_PORTD,1);




6)在while(1)里设置引脚电平,利用GPIO_SET(POT,BIT)、GPIO_CLR(POT,BIT)或者GPIO_TOGGLE(POT,BIT)进行流水灯编程。
3.2.4 实验结果

4.JPG (34.75 KB, 下载次数: 0)
下载附件  保存到相册
2015-9-19 10:50 上传






回复

使用道具 举报

该用户从未签到

2

主题

48

帖子

0

注册会员

Rank: 2

积分
105
最后登录
2015-11-28
 楼主| 发表于 2015-11-10 21:34:37 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

2

主题

48

帖子

0

注册会员

Rank: 2

积分
105
最后登录
2015-11-28
 楼主| 发表于 2015-11-10 21:35:48 | 显示全部楼层
回复

使用道具 举报

  • TA的每日心情
    奋斗
    昨天 12:13
  • 签到天数: 2452 天

    连续签到: 8 天

    [LV.Master]伴坛终老

    17

    主题

    5361

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    11296
    最后登录
    2025-7-20
    发表于 2015-11-10 21:42:42 | 显示全部楼层
    谢谢楼主分享。尽管文字排版不是很好,没怎么看出实验的目的。希望看到关于KL26Z更多的文章。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-3-29 09:54
  • 签到天数: 418 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    2928

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3307
    最后登录
    2021-4-7
    发表于 2015-11-11 00:11:02 | 显示全部楼层
    多谢分享。。
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    34

    主题

    135

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    387
    最后登录
    2016-1-13
    发表于 2015-11-12 10:59:07 | 显示全部楼层

    楼主注意发帖质量,不要刷帖哦

    上传资料最好能系统介绍下,归个类
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-9-17 17:18
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    26

    主题

    394

    帖子

    0

    高级会员

    Rank: 4

    积分
    967
    最后登录
    2019-10-9
    发表于 2015-11-12 13:07:55 | 显示全部楼层
    这么详细
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 07:00 , Processed in 0.096713 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表