0,1控制小灯亮灭

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验名称:0/1控制小灯亮灭

一.实验目的

通过该实验实习,进一步熟悉KDS嵌入式开发系统环境和C语言以及调试方式;加强串口通信(SCI)基本原理及编程原理;理解课本中的程序代码;分别运用查询方式、中断方式实现通信。

二.实验内容

通过串口调试器,发送0/1控制小灯的亮灭

三.实验过程

1.开发板使用串口

2.main.c函数

//说明见工程文件夹下的Doc文件夹内Readme.txt文件

//========================================================= #include "includes.h" //包含总头文件

int main(void)

{

//1. 声明主函数使用的变量

uint_32 mRuncount; //主循环计数器

//2. 关总中断

DISABLE_INTERRUPTS;

//3. 初始化外设模块

light_init(RUN_LIGHT_BLUE, LIGHT_OFF); //蓝灯初始化

light_init(RUN_LIGHT_RED, LIGHT_OFF); //蓝灯初始化

uart_init(UART_0,MCGIRCLK, 9600); //串口时钟MCGIRCLK(4000Khz)

uart_init (UART_1,BUSCLK, 9600); //串口1、2使用总线时钟24000Khz

uart_init (UART_2,BUSCLK, 9600); //波特率使用9600

uart_send_string(UART_0, "Hello Uart_0!\r\n"); //串口发送初始化提示

uart_send_string(UART_1, "Hello Uart_1!\r\n");

uart_send_string(UART_2, "Hello Uart_2!\r\n");//只插了串口2,所以在串口调试器中只有Hello Uart_2!

//4. 给有关变量赋初值

mRuncount=0; //主循环计数器

//5. 使能模块中断

uart_enable_re_int(UART_0); //使能串口0接收中断

uart_enable_re_int(UART_1); //使能串口1接收中断

uart_enable_re_int(UART_2); //使能串口2接收中断

//6. 开总中断

ENABLE_INTERRUPTS;

//进入主循环

//主循环开始============================================================= for(;;)

{

//运行指示灯(RUN_LIGHT)闪烁---------------------------------------------

mRuncount++; //主循环次数计数器+1

if (mRuncount >= RUN_COUNTER_MAX) //主循环次数计数器大于设定的宏常数

{

mRuncount=0; //主循环次数计数器清零

//light_change(RUN_LIGHT_BLUE); //蓝色运行指示灯(RUN_LIGHT_BLUE)状态变化

}

//以下加入用户程序-------------------------------------------------------- }//主循环end_for

//主循环结束============================================================= =====

}

3.isr.c函数中的串口2接受中断服务例程

void isr_uart2_re(void)//函数内部实现串口2接受字节,并返回字节

{

uint_8 ch;//将获取的一个字节存于ch中

uint_8 flag = 1;//判断是否成功接受一个字节

DISABLE_INTERRUPTS;//关总中断

ch = uart_re1(UART_2, &flag);//串口2接受一个字节,成功接受flag置0并将字节存放到ch中;失败flag置1,ch中存放0xFF

if (0 == flag)

{

uart_send1(UART_2, ch);//MCU通过串口2发送一个字节,

if('0' == ch)

light_control(RUN_LIGHT_BLUE,LIGHT_ON);

if('1' == ch)

light_control(RUN_LIGHT_BLUE,LIGHT_OFF);

}

ENABLE_INTERRUPTS;//开总中断

}

相关文档
最新文档