1101547_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1101547_zh-CN

1101547_zh-CN

K40:闪烁 LED<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

本教程介绍使用 TWR-K40X256-KIT 评估板在 Kinetis K40 上 闪烁 LED 的详细信息。它将介绍评估板和一些基本的CodeWarrior功能。

Overview

 

在这个练习中,学生将探索飞思卡尔杯赛车应用程序,该应用程序针对连接到塔式系统的飞思卡尔 K40 板。

 

学生将:

  • 配置软件开发环境
  • 配置评估板硬件
  • 了解如何将示例文件导入 CodeWarrior 项目
  • 构建项目
  • 在 Kinetis K40 塔式系统板上下载并运行代码
  • 了解如何利用 GPIO 外设来使 LED 闪烁

 

为了成功完成本练习,学生需要以下开发板和开发环境。

  • K40塔卡,TWR-K40x256
  • CodeWarrior for Microcontrollers
  • USB线

1.硬件

 

阅读闪烁 LED概述文章,了解有关 LED 电路、GPIO 引脚和参考手册的一般信息。

 

2. 设置软件开发环境

 

准备评估板和 PC 以进行微控制器编程和开发需要几个步骤。将评估板与 PC 连接起来需要下载并安装 CodeWarrior IDE,以及通过 USB 对微控制器进行编程的设备驱动程序。

A.下载并安装Codewarrior

 

在完成此示例项目之前, 请下载并安装codewarrior-10-1或与twr-k40x256-kit兼容的最新版本。

 

B. 下载并安装驱动程序

 

除了 CodeWarrior 之外,可能还需要安装以下一个或两个工具(需要验证):

  1. RAppID 初始化工具 - RAppID 包含在评估板附带的 DVD 中。在 DVD 的主目录中,单击“TRK_MPC5604B.html”文件打开 DVD 界面,该界面提供评估板的用户手册、软件、原理图和文档。
  2. P&E Microcomputer Systems, Inc 驱动程序 - P&E 是TRK-MPC5604BKinetis Tower 系统设备的计算机驱动程序,可通过 CodeWarrior 调试 OSJTAG 接口通过 USB 对评估板进行编程。如果磁盘上找不到该驱动程序,可以在此处下载。

     

3. 设置硬件:Twr K40x256 硬件设置

 

Twr K40x256 硬件配置步骤如下。导入 LED 项目之前,请遵循twr-k40x256-hardware-setup说明

4.导入LED项目

 

成功下载并安装软件后,下一步是将现有项目导入到您的工作区。在这种情况下,LED_BLINK_96MHZ 项目。按照codewarrior-project-import页面上的说明将LED_BLINK_96MHZ项目导入 CodeWarrior。

如果遇到错误,请查看问题视图并解决。忽略任何警告。

5. 构建代码

 

如果您的项目视图中有多个项目,请确保正确的项目是焦点。最可靠的方法是右键单击项目并选择“构建项目”,如下所示。您也可以转到“项目”菜单并选择相同的命令。

默认情况下,应用程序设置为链接到 RAM。如果您希望您的程序在 FLASH 中,请确保您已启用该构建配置:

 

INTERNAL_FLASH.png

 

确保在进行配置更改后执行“清理”操作(在项目菜单下)。

如果遇到错误,请查看问题视图并解决。您可以忽略任何警告。

6.下载/调试/运行

 

如果项目编译正确,就可以下载到开发板并观察其运行情况。确保开发板附带的 USB 线缆已将开发板连接到主机的 USB 端口。
有多种方法可以发出“调试”命令。在项目视图中右键单击项目,然后选择“调试为”->“CodeWarrior 下载”。或者,转到“运行”菜单,然后选择“调试”(F11)。

点击“继续”按钮resume.jpg您应该会看到 LED 闪烁!

点击暂停按钮pause.jpg停止执行。单击终止按钮stop.jpg结束调试。

7.学习步骤:LED代码说明

读/写

 

如果 LED 位于端口 C、位 7,我们可能有如下代码:

#define LED_E1_Location(1<<7)  

例如,要切换引脚,可以使用以下代码:

GPIOC_PSOR=LED_E1_LOC  

 

将位于“E1”处的 LED 设置为高。

 

语法意味着以下 GPIO C指的是端口C

 

“Set”是GPIO控制的三个常用命令之一。还有“清除”和“切换”命令。

 

  • 命令:“GPIOC_P S OR”字面意思是端口设置输出寄存器,将引脚设置为高
  • 命令:“GPIOC_P C OR”清除一个引脚,端口清除输出寄存器将一个引脚清除为“低”状态
  • 命令:“GPIOC_P T OR”切换与当前状态相反的引脚

 

« 是一个“shift”命令,在c-programming-for-embedded-systems 中讨论过。您也可以使用 MASK 更改原始寄存器,但专用的设置/清除/切换寄存器更为直接。

 

**需要更新**

硬件芯片端口/引脚Comment
SW3PT细胞内容
SW4细胞内容细胞内容

函数

 

以下函数可以访问 LED;

//其中 n 是 LED 数量
LED_En_TOGGLE ; //将 LED 切换到不同的状态
LED_En_ON ; // 打开 LED
LED 开启关闭 //关闭 LED

Variables

 

LED 的位置

  • LED_E1_LOC
  • LED_E2_LOC
  • LED_E3_LOC
  • LED_E4_LOC

头文件定义

 

来自k40_TOWER_BOARD_SUPPORT.h

//E1 LED 位于端口 C,位 7
#定义 LED_E1_LOC 1 << 7
#定义 LED_E2_LOC 1 << 8
#定义 LED_E3_LOC 1 << 9
#定义 LED_E4_LOC 1 << 11

//有专用的设置和清除寄存器。
//向 PSOR 写入 1 可设置位,向 PCOR 写入可清除位。
//可以使用 PTOR 寄存器来切换位
//您也可以访问原始寄存器-> PDOR |= My Bit
//但专用位设置/清除/切换寄存器更容易!

//此外,LED 的负极朝向端口引脚!这意味着
//您必须关闭端口才能让 LED 打开引脚。

#定义 LED_E1_关闭   GPIOC_PSOR = LED_E1_LOC
#定义 LED_E1_亮   GPIOC_PCOR = LED_E1_LOC
#定义 LED_E1_切换   GPIOC_PTOR = LED_E1_LOC

#定义 LED_E2_关闭   GPIOC_PSOR = LED_E2_LOC
#定义 LED_E2_亮   GPIOC_PCOR = LED_E2_LOC
#定义 LED_E2_切换   GPIOC_PTOR = LED_E2_LOC

#定义 LED_E3_关闭   GPIOC_PSOR = LED_E3_LOC
#定义 LED_E3_亮   GPIOC_PCOR = LED_E3_LOC
#定义 LED_E3_切换   GPIOC_PTOR = LED_E3_LOC

#定义 LED_E4_关闭   GPIOB_PSOR = LED_E4_LOC
#定义 LED_E4_亮   GPIOB_PCOR = LED_E4_LOC
#定义 LED_E4_切换   GPIOB_PTOR = LED_E4_LOC

初始化GPIO

 

来自 K40_TOWER_BOARD_SUPPORT.c

空白 初始化K40GPIO ()
{
SIM_SCGC5 = SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTE_MASK ;

//要使用端口,必须启用其时钟!!
//让我们只启用所有端口的时钟

//重要!每个 IO 引脚都有一个专用的 32 位寄存器进行设置(选择 GPIO 与外设、IRQ 等)。
//将端口 C7、C8、C9 和 B11 设置为 GPIO 并启用高驱动强度
PORTC_PCR7 = PORT_PCR_MUX ( 1 ) | PORT_PCR_DSE_MASK ; //在引脚上启用 GPIO
PORTC_PCR8 = PORT_PCR_MUX ( 1 ) | PORT_PCR_DSE_MASK ; //在引脚上启用 GPIO
PORTC_PCR9 = PORT_PCR_MUX ( 1 ) | PORT_PCR_DSE_MASK ; //在引脚上启用 GPIO
PORTB_PCR11 = PORT_PCR_MUX ( 1 ) | PORT_PCR_DSE_MASK ; //在引脚上启用 GPIO

PORTC_PCR18 = PORT_PCR_MUX ( 1 ) | PORT_PCR_DSE_MASK
PORTE_PCR28 = PORT_PCR_MUX ( 1 ) | PORT_PCR_DSE_MASK

//确保 GPIO 设置为输出
GPIOC_PDDR |= LED_E1_LOC | LED_E2_LOC | LED_E3_LOC
GPIOB_PDDR |= LED_E4_LOC

LED_E1_关闭
LED_E2_关闭
LED_E3_关闭
LED_E4_关闭
}

 

Main.c或任何其他创建的 C 文件中,使用以下函数使 LED 闪烁:

LED_E1_TOGGLE;
LED_E1_ON;
LED_E2_OFF;

其他K40教程:

 

K40相关页面

 

K40:转动伺服教程

 


K40:驱动直流电机教程

Kinetis K40

TWR-K40X256

K40:闪烁的 LED

致谢/参考文献

 

本教程的部分内容来自:

 

肖恩·莫菲特:宾夕法尼亚州立大学电气工程专业
用于 - K40 代码

 

处理器专家动手实验室 修订版 1.0,2011 年 5 月
作者:Jim Trudeau,飞思卡尔半导体公司
for - 一些步骤的文本描述

原始附件已移至: LED_BLINK_96MHZ.zip

飞思卡尔杯内容回复:K40:LED闪烁<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我在哪里可以找到k40_TOWER_BOARD_SUPPORT.h?

Tags (1)
No ratings
Version history
Last update:
‎01-06-2026 01:46 AM
Updated by: