
一:實驗名稱:四位流水燈
二:實驗內容
實現四位流水燈的循環閃爍
三:實驗目的
1:掌握LED硬件電路
2:掌握KL25 GPIO模塊輸出的寄存器配置方法
3: 掌握四位流水燈循環閃爍的編程方法
四:實驗方法
1:查閱該部分的電路圖
發現KL25的PTB8、PTB9、PTB10、PTB11引腳分別控制著D6、D7、D8、D9四個LED發光二極管。
file:///C:\Users\AA\AppData\Local\Temp\ksohtml\wps_clip_image-3968.png
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
*function: 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);//延時
}
}


為了方便大家更好的學習,您還可以關注暢學電子和EDA的公眾號,每天推送相關知識,希望能對你的學習有所幫助!

