使用Keil MDK for ARM来开发KEA并配有LED闪烁的例程

一个NXP代理商的建议:尽量选择官方S32DS来开发KEA和S32K系列,不建议使用第三方的IDE,包括Keil

硬件准备

  • 开发板:S9KEAZN16AMLH(其它的MCU也是类似)
  • 仿真器: J-Link

也有许多同学问到如何使用J-Link与MCU的连接,我是使用SWD方式,请看图了:
在这里插入图片描述
其中J-Link的SWD相关接口的定义是:

  • 第1脚:Vref,这个必须连接MCU的供电电源
  • 第7脚:SWIO
  • 第9脚:SWCLK
  • 第15脚:RESET
  • 第20脚:GND

Keil MDK for ARM的安装

这个看之前的文章: 在Windows安装MDK-ARM V5.30

LED闪烁的例程

LED原理图

在这里插入图片描述
使用PTD2来控制一个LED, 高电平就亮,低电平就不亮。

使用Keil新建工程

这里主要记录一些关键点,其中的我工程名称是 S9KEAZN16_TEST8:
(1)选择MCU型号
使用Keil MDK for ARM来开发KEA并配有LED闪烁的例程_第1张图片

注: 如果这里没有显示你要开发的MCU的型号,那就先要安装相应的packs

(2)选择相应的组件
使用Keil MDK for ARM来开发KEA并配有LED闪烁的例程_第2张图片
(3)初始化工程目录如下:
使用Keil MDK for ARM来开发KEA并配有LED闪烁的例程_第3张图片

移植Keil的LED闪烁的例程到自己的工程目录中

(1)将下面文档复制一份放到自己的工程目录下面:

  • Blinky.c :
    D:\Keil_v5\ARM\Packs\Keil\Kinetis_KEAxx_DFP\1.3.0\Boards\NXP\TRK-KEA64\Blinky
  • Board_LED.h :
    D:\Keil_v5\ARM\Packs\Keil\MDK-Middleware\7.11.1\Board
  • LED_TRK-KEA64.c : D:\Keil_v5\ARM\Packs\Keil\Kinetis_KEAxx_DFP\1.3.0\Boards\NXP\TRK-KEA64\Common

(2)移植后的工程目录如下:
使用Keil MDK for ARM来开发KEA并配有LED闪烁的例程_第4张图片

(4)把这三个文件添加到工程中:
使用Keil MDK for ARM来开发KEA并配有LED闪烁的例程_第5张图片
使用Keil MDK for ARM来开发KEA并配有LED闪烁的例程_第6张图片
(5)修改 Blinky.c和LED_TRK-KEA64.c:

// Name:    Blinky.c

#include "SKEAZN642.h"                  // Device header
#include "cmsis_os.h"                   // ARM::CMSIS:RTOS:Keil RTX
#include "Board_Buttons.h"              // ::Board Support:Buttons
#include "Board_LED.h"                  // ::Board Support:LED


/*----------------------------------------------------------------------------
  Main function
 *----------------------------------------------------------------------------*/
int main (void) {

  SystemCoreClockUpdate();

  LED_Initialize();                         /* LED Initialization             */
  Buttons_Initialize();                     /* Buttons Initialization         */

  while (1) {
    LED_On(0);                            /* Turn specified LED on          */
    osDelay(500);                           /* Wait 500ms                     */
 
    LED_Off(0);                           /* Turn specified LED off         */
    osDelay(500);                           /* Wait 500ms                     */
  }
}
// Name: LED_TRK-KEA64.c
#include "SKEAZN642.h"                  // Device header
#include "Board_LED.h"                  // ::Board Support:LED

#define NUM_LEDS  (1)                   /* Number of available LEDs           */

/* LED pins are PTC0..PTC3 (GPIOA.16..19) */
const uint32_t led_mask[] = { 1U << 26};

/**
  \fn          int32_t LED_Initialize (void)
  \brief       Initialize LEDs
  \returns
   - \b  0: function succeeded
   - \b -1: function failed
*/
int32_t LED_Initialize (void) {

  GPIOA->PDDR |= (led_mask[0]);         /* enable PTD2 as Output      */

  LED_SetOut (0);                         /* switch LEDs off                  */

  return 0;
}

/**
  \fn          int32_t LED_On (uint32_t num)
  \brief       Turn on requested LED
  \param[in]   num  LED number
  \returns
   - \b  0: function succeeded
   - \b -1: function failed
*/
int32_t LED_On (uint32_t num) {

  if (num < NUM_LEDS) {
    GPIOA->PSOR = led_mask[num];
  }

  return 0;
}

/**
  \fn          int32_t LED_Off (uint32_t num)
  \brief       Turn off requested LED
  \param[in]   num  LED number
  \returns
   - \b  0: function succeeded
   - \b -1: function failed
*/
int32_t LED_Off (uint32_t num) {

  if (num < NUM_LEDS) {
    GPIOA->PCOR = led_mask[num];
  }

  return 0;
}

/**
  \fn          int32_t LED_SetOut (uint32_t val)
  \brief       Write value to LEDs
  \param[in]   val  value to be displayed on LEDs
  \returns
   - \b  0: function succeeded
   - \b -1: function failed
*/
int32_t LED_SetOut(uint32_t value) {
  int i;

  for (i = 0; i < NUM_LEDS; i++) {
    if (value & (1<<i)) {
      LED_On (i);
    } else {
      LED_Off(i);
    }
  }
	
  return 0;
}

/**
  \fn          uint32_t LED_GetCount (void)
  \brief       Get number of LEDs
  \return      Number of available LEDs
*/
uint32_t LED_GetCount (void) {
  return NUM_LEDS;
}

注意的是,要看手册,PTD2对应是GPIOA的第26位:
在这里插入图片描述

编译工程

这里没什么好说的
使用Keil MDK for ARM来开发KEA并配有LED闪烁的例程_第7张图片

配置J-Link

使用Keil MDK for ARM来开发KEA并配有LED闪烁的例程_第8张图片
使用Keil MDK for ARM来开发KEA并配有LED闪烁的例程_第9张图片
使用Keil MDK for ARM来开发KEA并配有LED闪烁的例程_第10张图片

调试程序

使用Keil MDK for ARM来开发KEA并配有LED闪烁的例程_第11张图片
使用Keil MDK for ARM来开发KEA并配有LED闪烁的例程_第12张图片
如果顺利的话,你将会看到LED不停地一闪一闪,其中周期是500ms。

OVER~~

你可能感兴趣的:(KEA,工具)