四位流水灯一:实验名称 四位流水灯
二:实验内容实现四位流水灯的循环闪烁
三:实验目的2:掌握KL25 GPIO模块输出的寄存器配置方法
3: 掌握四位流水灯循环闪烁的编程方法
四:实验方法 1:查阅该部分的威廉希尔官方网站
图
发现KL25的PTB8、PTB9、PTB10、PTB11引脚分别控制着D6、D7、D8、D9四个LED发光二极管。
2:对GPIO模块的相应寄存器进行配置
(1) 查阅KL25 Reference Manual 122页发现GPIO由Platform clock提供时钟。
(2) 将Platform clock时钟和POTRB模块接通,编程如下:
SIM_SCGC5=SIM_SCGC5_PORTB_MASK;//可查阅SIM_SCGC5寄存器
(3) 设置复用引脚属性,将PTB8、PTB9、PTB10、PTB11配置为GPIO功能,编程如下:
PORTB_PCR8=PORT_PCR_MUX(1);
PORTB_PCR9=PORT_PCR_MUX(1);
PORTB_PCR10=PORT_PCR_MUX(1);
PORTB_PCR11=PORT_PCR_MUX(1);
// 可查阅PORTx_PCRn寄存器和KL25 Data Sheet 46页进行相关的了解
(4)设置引脚输入输出方向,将PTB8、PTB9、PTB10、PTB11设置成输出,编程如下:
GPIOB_PDDR=GPIO_PDDR_PDD(0x00000f00u);//可查阅GPIOx_PDDR寄存器
(5)设置引脚输出逻辑电平,将PTB8、PTB9、PTB10、PTB11设置输出高电平,编程如下:
GPIOB_PDOR=GPIO_PDOR_PDO(0x00000f00u); //可查阅GPIOx_PDOR寄存器
3:实现四位流水灯的循环闪烁
查阅例程主函数里面的相应程序/*
***********************************************************
* file name : main.c
* func
tion : function for main
*
***********************************************************
*/
#include "derivative.h"
#include "config.h"
#include "crg.h"
#include "gpio.h"
/******************************主函数*************************************/
int main(void)
{
asm(" CPSID i"); //关总中断
crg_default_init(); //系统默认时钟
//crg_configuration_init(); //配置之后的时钟
MCGIRCLK_outenable(); //使能MCGIRCLK输出2M
clock_test(4); //相应时钟的测试
gpio_init(); //GPIO初始化
asm(" CPSIE i"); //开总中断
for(;;)
{
GPIOB_PDOR=GPIO_PDOR_PDO(0x00000100u); //PTB8输出高电平 ,D6LED灯亮
delayms(15000); //延时
GPIOB_PDOR=GPIO_PDOR_PDO(0x00000200u); //PTB9输出高电平 ,D7LED灯亮
delayms(15000); //延时
GPIOB_PDOR=GPIO_PDOR_PDO(0x00000400u); //PTB10输出高电平 ,D8LED灯亮
delayms(15000); //延时
GPIOB_PDOR=GPIO_PDOR_PDO(0x00000800u); //PTB11输出高电平 ,D9LED灯亮
delayms(15000); //延时
}
}