本教程介绍使用 TWR-K40X256-KIT 评估板在 Kinetis K40 上 闪烁 LED 的详细信息。它将介绍评估板和一些基本的CodeWarrior功能。
在这个练习中,学生将探索飞思卡尔杯赛车应用程序,该应用程序针对连接到塔式系统的飞思卡尔 K40 板。
学生将:
为了成功完成本练习,学生需要以下开发板和开发环境。
阅读闪烁 LED概述文章,了解有关 LED 电路、GPIO 引脚和参考手册的一般信息。
准备评估板和 PC 以进行微控制器编程和开发需要几个步骤。将评估板与 PC 连接起来需要下载并安装 CodeWarrior IDE,以及通过 USB 对微控制器进行编程的设备驱动程序。
在完成此示例项目之前, 请下载并安装codewarrior-10-1或与twr-k40x256-kit兼容的最新版本。
除了 CodeWarrior 之外,可能还需要安装以下一个或两个工具(需要验证):
Twr K40x256 硬件配置步骤如下。导入 LED 项目之前,请遵循twr-k40x256-hardware-setup说明。
成功下载并安装软件后,下一步是将现有项目导入到您的工作区。在这种情况下,LED_BLINK_96MHZ 项目。按照codewarrior-project-import页面上的说明将LED_BLINK_96MHZ项目导入 CodeWarrior。
如果遇到错误,请查看问题视图并解决。忽略任何警告。
如果您的项目视图中有多个项目,请确保正确的项目是焦点。最可靠的方法是右键单击项目并选择“构建项目”,如下所示。您也可以转到“项目”菜单并选择相同的命令。
默认情况下,应用程序设置为链接到 RAM。如果您希望您的程序在 FLASH 中,请确保您已启用该构建配置:
确保在进行配置更改后执行“清理”操作(在项目菜单下)。
如果遇到错误,请查看问题视图并解决。您可以忽略任何警告。
如果项目编译正确,就可以下载到开发板并观察其运行情况。确保开发板附带的 USB 线缆已将开发板连接到主机的 USB 端口。
有多种方法可以发出“调试”命令。在项目视图中右键单击项目,然后选择“调试为”->“CodeWarrior 下载”。或者,转到“运行”菜单,然后选择“调试”(F11)。
如果 LED 位于端口 C、位 7,我们可能有如下代码:
#define LED_E1_Location(1<<7) 例如,要切换引脚,可以使用以下代码:
GPIOC_PSOR=LED_E1_LOC
将位于“E1”处的 LED 设置为高。
语法意味着以下 GPIO C指的是端口C
“Set”是GPIO控制的三个常用命令之一。还有“清除”和“切换”命令。
« 是一个“shift”命令,在c-programming-for-embedded-systems 中讨论过。您也可以使用 MASK 更改原始寄存器,但专用的设置/清除/切换寄存器更为直接。
**需要更新**
| 硬件 | 芯片端口/引脚 | Comment |
|---|---|---|
| SW3 | PT | 细胞内容 |
| SW4 | 细胞内容 | 细胞内容 |
以下函数可以访问 LED;
//其中 n 是 LED 数量
LED_En_TOGGLE ; //将 LED 切换到不同的状态
LED_En_ON ; // 打开 LED
LED 开启关闭 //关闭 LED
LED 的位置
来自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
来自 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 代码
处理器专家动手实验室 修订版 1.0,2011 年 5 月
作者:Jim Trudeau,飞思卡尔半导体公司
for - 一些步骤的文本描述
原始附件已移至: LED_BLINK_96MHZ.zip
我在哪里可以找到k40_TOWER_BOARD_SUPPORT.h?