查看: 4605|回复: 8

[原创] MKL26初入上手

[复制链接]
  • TA的每日心情
    难过
    2016-12-1 10:25
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    12

    主题

    164

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    336
    最后登录
    2020-1-23
    发表于 2015-10-5 19:57:36 | 显示全部楼层 |阅读模式
    这是我第一次用Freescale的片子,以前各大公司的芯片也用了不少,但是都是基于官方的固件库的,换到这块板子,有点摸不上头绪了。说说我的经历
    第一我先去找了官方的库,发现有KSDK这个库,发现用的人不多,我看了下,貌似资料也不是很多,也就没多看。
    第二找了第三方的库现在比较,各家有各家的特点肯些做的确实不错。
    官方的KSDK我是想建一个不用KSDK的代码,一个干干净净的工程的,但是出了各种各种各种的问题,最后也没有解决,汇编上的问题,我看不懂,我试了各种编译器,GCC ,IAR,MDK,都没有成功,最后的那个工程是用KDS建了一个可以用的工程,然后用光盘中的汇编文件替换了原来的汇编文件,终于不报错程序也运行正常了,我是一个爱折腾的人~~

    -----------------------------------------------------------------------------------------------------------------------------------------------

    然后我又开始折腾库了,各家的库都有各家的特点,找不找去,也没发现一个比较合我的库,各人感觉不一样,我是一个比较无聊的人,我这么感觉,之后开始自己写了,国庆什么的,到今天才真正的算是点亮了一个灯而已,各种模仿加抄袭,自己看了一下手册写了几个函数,毕竟板子在手上不能对社区没有一个交待,这么信任一个新手

    1. #include "MKL26Z4.h"
    2. #include "stdlib.h"
    3. #define PORT_SHIFT                12

    4. typedef enum {
    5.     PTA0 = 0x0,
    6.     PTA1 = 0x4,
    7.     PTA2 = 0x8,
    8.     PTA3 = 0xc,
    9.     PTA4 = 0x10,
    10.     PTA5 = 0x14,
    11.     PTA6 = 0x18,
    12.     PTA7 = 0x1c,
    13.     PTA8 = 0x20,
    14.     PTA9 = 0x24,
    15.     PTA10 = 0x28,
    16.     PTA11 = 0x2c,
    17.     PTA12 = 0x30,
    18.     PTA13 = 0x34,
    19.     PTA14 = 0x38,
    20.     PTA15 = 0x3c,
    21.     PTA16 = 0x40,
    22.     PTA17 = 0x44,
    23.     PTA18 = 0x48,
    24.     PTA19 = 0x4c,
    25.     PTA20 = 0x50,
    26.     PTA21 = 0x54,
    27.     PTA22 = 0x58,
    28.     PTA23 = 0x5c,
    29.     PTA24 = 0x60,
    30.     PTA25 = 0x64,
    31.     PTA26 = 0x68,
    32.     PTA27 = 0x6c,
    33.     PTA28 = 0x70,
    34.     PTA29 = 0x74,
    35.     PTA30 = 0x78,
    36.     PTA31 = 0x7c,
    37.     PTB0 = 0x1000,
    38.     PTB1 = 0x1004,
    39.     PTB2 = 0x1008,
    40.     PTB3 = 0x100c,
    41.     PTB4 = 0x1010,
    42.     PTB5 = 0x1014,
    43.     PTB6 = 0x1018,
    44.     PTB7 = 0x101c,
    45.     PTB8 = 0x1020,
    46.     PTB9 = 0x1024,
    47.     PTB10 = 0x1028,
    48.     PTB11 = 0x102c,
    49.     PTB12 = 0x1030,
    50.     PTB13 = 0x1034,
    51.     PTB14 = 0x1038,
    52.     PTB15 = 0x103c,
    53.     PTB16 = 0x1040,
    54.     PTB17 = 0x1044,
    55.     PTB18 = 0x1048,
    56.     PTB19 = 0x104c,
    57.     PTB20 = 0x1050,
    58.     PTB21 = 0x1054,
    59.     PTB22 = 0x1058,
    60.     PTB23 = 0x105c,
    61.     PTB24 = 0x1060,
    62.     PTB25 = 0x1064,
    63.     PTB26 = 0x1068,
    64.     PTB27 = 0x106c,
    65.     PTB28 = 0x1070,
    66.     PTB29 = 0x1074,
    67.     PTB30 = 0x1078,
    68.     PTB31 = 0x107c,
    69.     PTC0 = 0x2000,
    70.     PTC1 = 0x2004,
    71.     PTC2 = 0x2008,
    72.     PTC3 = 0x200c,
    73.     PTC4 = 0x2010,
    74.     PTC5 = 0x2014,
    75.     PTC6 = 0x2018,
    76.     PTC7 = 0x201c,
    77.     PTC8 = 0x2020,
    78.     PTC9 = 0x2024,
    79.     PTC10 = 0x2028,
    80.     PTC11 = 0x202c,
    81.     PTC12 = 0x2030,
    82.     PTC13 = 0x2034,
    83.     PTC14 = 0x2038,
    84.     PTC15 = 0x203c,
    85.     PTC16 = 0x2040,
    86.     PTC17 = 0x2044,
    87.     PTC18 = 0x2048,
    88.     PTC19 = 0x204c,
    89.     PTC20 = 0x2050,
    90.     PTC21 = 0x2054,
    91.     PTC22 = 0x2058,
    92.     PTC23 = 0x205c,
    93.     PTC24 = 0x2060,
    94.     PTC25 = 0x2064,
    95.     PTC26 = 0x2068,
    96.     PTC27 = 0x206c,
    97.     PTC28 = 0x2070,
    98.     PTC29 = 0x2074,
    99.     PTC30 = 0x2078,
    100.     PTC31 = 0x207c,
    101.     PTD0 = 0x3000,
    102.     PTD1 = 0x3004,
    103.     PTD2 = 0x3008,
    104.     PTD3 = 0x300c,
    105.     PTD4 = 0x3010,
    106.     PTD5 = 0x3014,
    107.     PTD6 = 0x3018,
    108.     PTD7 = 0x301c,
    109.     PTD8 = 0x3020,
    110.     PTD9 = 0x3024,
    111.     PTD10 = 0x3028,
    112.     PTD11 = 0x302c,
    113.     PTD12 = 0x3030,
    114.     PTD13 = 0x3034,
    115.     PTD14 = 0x3038,
    116.     PTD15 = 0x303c,
    117.     PTD16 = 0x3040,
    118.     PTD17 = 0x3044,
    119.     PTD18 = 0x3048,
    120.     PTD19 = 0x304c,
    121.     PTD20 = 0x3050,
    122.     PTD21 = 0x3054,
    123.     PTD22 = 0x3058,
    124.     PTD23 = 0x305c,
    125.     PTD24 = 0x3060,
    126.     PTD25 = 0x3064,
    127.     PTD26 = 0x3068,
    128.     PTD27 = 0x306c,
    129.     PTD28 = 0x3070,
    130.     PTD29 = 0x3074,
    131.     PTD30 = 0x3078,
    132.     PTD31 = 0x307c,
    133.     PTE0 = 0x4000,
    134.     PTE1 = 0x4004,
    135.     PTE2 = 0x4008,
    136.     PTE3 = 0x400c,
    137.     PTE4 = 0x4010,
    138.     PTE5 = 0x4014,
    139.     PTE6 = 0x4018,
    140.     PTE7 = 0x401c,
    141.     PTE8 = 0x4020,
    142.     PTE9 = 0x4024,
    143.     PTE10 = 0x4028,
    144.     PTE11 = 0x402c,
    145.     PTE12 = 0x4030,
    146.     PTE13 = 0x4034,
    147.     PTE14 = 0x4038,
    148.     PTE15 = 0x403c,
    149.     PTE16 = 0x4040,
    150.     PTE17 = 0x4044,
    151.     PTE18 = 0x4048,
    152.     PTE19 = 0x404c,
    153.     PTE20 = 0x4050,
    154.     PTE21 = 0x4054,
    155.     PTE22 = 0x4058,
    156.     PTE23 = 0x405c,
    157.     PTE24 = 0x4060,
    158.     PTE25 = 0x4064,
    159.     PTE26 = 0x4068,
    160.     PTE27 = 0x406c,
    161.     PTE28 = 0x4070,
    162.     PTE29 = 0x4074,
    163.     PTE30 = 0x4078,
    164.     PTE31 = 0x407c,
    165.           NC = (int)0xFFFFFFFF,
    166. }PinName;



    167. typedef struct {
    168.     PinName  pin;
    169.     uint32_t mask;

    170.     __IO uint32_t *reg_dir;
    171.     __IO uint32_t *reg_set; //psor
    172.     __IO uint32_t *reg_clr;
    173.     __I  uint32_t *reg_in;
    174. } gpio_t;

    175. typedef enum {
    176.     PullNone = 0,
    177.     PullUp = 2,
    178.     PullDefault = PullUp
    179. } PinMode;

    180. typedef enum {
    181.     PIN_INPUT,
    182.     PIN_OUTPUT
    183. } PinDirection;

    184. void myDelay (uint32_t ulTime)
    185. {
    186.     uint32_t i;

    187.     i = 0;
    188.     while (ulTime--) {
    189.         for (i = 0; i < 5000; i++);
    190.     }
    191. }

    192. void Pin_Mode_Set(PinName pin, PinMode mode)
    193. {
    194.                 __IO uint32_t* pin_pcr = (__IO uint32_t*)(PORTA_BASE + pin);
    195.                 *pin_pcr = (*pin_pcr & ~0x3) | mode;
    196. }


    197. void pin_function(PinName pin,  int function, PinDirection dir)
    198. {
    199.                 __IO uint32_t* pin_pcr = 0;
    200.                
    201.                 uint32_t current_port = (uint32_t)pin >> PORT_SHIFT;
    202.                 uint32_t current_pin = (uint32_t)(pin & 0x7c) >> 2;
    203.           FGPIO_Type *reg = (FGPIO_Type *)(FPTA_BASE + current_port * 0x40);
    204.                 SIM->SCGC5 |= 1 << (SIM_SCGC5_PORTA_SHIFT + current_port);
    205.                 pin_pcr = &((PORT_Type *)(PORTA_BASE + 0x1000 * current_port))->PCR[current_pin];
    206.                 *pin_pcr = (*pin_pcr & ~0x700) | (function << 8);
    207.                 switch(dir)
    208.                 {
    209.                         case PIN_INPUT:
    210.                                 reg->PDDR &= ~(1 << current_pin);
    211.                                 break;
    212.                         case PIN_OUTPUT:
    213.                                 reg->PDDR |= 1 << current_pin;
    214.                                 break;
    215.                 }
    216. }

    217. void Pin_Set(PinName pin)
    218. {
    219.                 uint32_t current_port = (uint32_t)pin >> PORT_SHIFT;
    220.                 uint32_t current_pin  = (uint32_t)(pin & 0x7c) >> 2;
    221.                 FGPIO_Type *reg = (FGPIO_Type *)(FPTA_BASE + current_port *0x40);
    222.                 reg->PSOR |= (1 << current_pin);
    223. }

    224. void Pin_clr(PinName pin)
    225. {
    226.                                 uint32_t current_port = (uint32_t)pin >> PORT_SHIFT;
    227.                 uint32_t current_pin  = (uint32_t)(pin & 0x7c) >> 2;
    228.                 FGPIO_Type *reg = (FGPIO_Type *)(FPTA_BASE + current_port *0x40);
    229.                 reg->PCOR |= (1 << current_pin);
    230. }


    231. int main(void)
    232. {
    233.                 pin_function(PTB18, 1,PIN_OUTPUT);
    234.                 Pin_Mode_Set(PTB18,PullUp);
    235. //                GPIO_Init();

    236.                 while(1)
    237.                 {
    238.                                 Pin_Set(PTB18);
    239.                                 myDelay(500);
    240.                                 Pin_clr(PTB18);
    241.                                 myDelay(500);
    242.                        
    243.                 }
    244. }
    复制代码
    代码有部分是参考其他的,不知道,目前只是做的很简单,以前想全部封装起来,不过这是个庞大的工程。。应该

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-9-20 20:56
  • 签到天数: 20 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    12

    主题

    449

    帖子

    0

    高级会员

    Rank: 4

    积分
    984
    最后登录
    2018-9-20
    发表于 2015-10-5 20:52:12 | 显示全部楼层
    支持楼主,一个认真的电子爱好者,尽责的坛友
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16875
    最后登录
    1970-1-1
    发表于 2015-10-5 21:06:08 | 显示全部楼层
    本帖最后由 lkl0305 于 2015-10-5 21:11 编辑

    多谢分享
    0.png 1.png 2.png 3.png 4.png 5.png 6.png 8.png 9.png 7.png
    00000.jpg
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-11-5 18:45
  • 签到天数: 158 天

    连续签到: 1 天

    [LV.7]常住居民III

    26

    主题

    669

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1724
    最后登录
    2020-11-5
    发表于 2015-10-5 23:44:41 | 显示全部楼层
    谢谢分享!



    futu.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-17 08:07
  • 签到天数: 273 天

    连续签到: 1 天

    [LV.8]以坛为家I

    74

    主题

    2338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7522
    最后登录
    2021-8-30
    发表于 2015-10-6 08:31:00 | 显示全部楼层
    谢谢分享,要是有点中文注释就更好了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5788
    最后登录
    2025-5-7
    发表于 2015-10-6 09:01:49 | 显示全部楼层
    谢谢分享
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2016-12-1 10:25
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    12

    主题

    164

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    336
    最后登录
    2020-1-23
     楼主| 发表于 2015-10-6 12:15:37 | 显示全部楼层
    anny 发表于 2015-10-6 08:31
    谢谢分享,要是有点中文注释就更好了

    尽对着手册,没有写注释,回头一块儿整理的时候补上
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-3-12 12:14
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    7

    主题

    556

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1601
    最后登录
    2017-3-12
    发表于 2015-10-7 09:29:39 | 显示全部楼层
    强烈支持
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    24

    主题

    364

    帖子

    0

    高级会员

    Rank: 4

    积分
    760
    最后登录
    2021-4-2
    发表于 2015-10-7 21:25:44 | 显示全部楼层
    多谢分享
    085152sf4rlgug5zugug54.png
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-13 15:29 , Processed in 0.104840 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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