| 
 
| 学东西就是要趁热打铁,这样进步才能更快,这不,今天继续跟大家分享下我用上位机控制小灯的实验。 在第二篇学习之旅中,我已经完成了串口的基本调试,在第一篇完场了led的点亮的实验,那么接下来自然而然的想到了将两个实验合并成一个,这样做既巩固了前面学到的知识,同时也增加了自己学习的兴趣,自娱自乐吗 。
 
 个人感觉这个实验实用性还可以,因为它基本表达了一种简单控制流程,通过上位机控制目标板,从而完成一些基本控制动作,同时在动作完成后回传信息进行反馈。下面就是我的代码:
 
 
 
 #include "LPC13xx.h"
 #include "gpio.h"
 #include "uart.h"
 #include<stdio.h>
 #include<string.h>
 
 // TODO: insert other include files here
 
 // TODO: insert other definitions and declarations here
 extern volatile uint32_t UARTCount;
 extern volatile uint8_t UARTBuffer[BUFSIZE];
 
 
 uint8_t UartRecChar(void)
 {
 while ( UARTCount == 0 );
 
 LPC_UART->IER = IER_THRE | IER_RLS;   /* Disable RBR */
 UARTCount = 0;
 LPC_UART->IER = IER_THRE | IER_RLS | IER_RBR; /* Re-enable RBR */
 return UARTBuffer[0];
 }
 //////////////////////////////////////////
 void Ledon(void)
 {
 GPIOSetValue( PORT0, 7, 1 );
 }
 //////////////////////////////////////////
 void ledoff(void)
 {
 GPIOSetValue( PORT0, 7, 0 );
 }
 
 int main(void)
 {
 uint8_t Key;
 // TODO: insert code here
 UARTInit(115200);
 GPIOInit();
 GPIOSetDir( PORT0, 7, 1 );
 GPIOSetValue( PORT0, 7, 0 );
 UARTSend("LPC1343test\n",sizeof("LPC1343test\n"));
 
 while (1)
 {
 Key = UartRecChar();
 switch(Key)
 {
 case'o':
 Ledon();
 UARTSend("led on\n",sizeof("led on\n"));
 break;
 case'c':
 ledoff();
 UARTSend("led off\n",sizeof("led off\n"));
 break;
 default:break;
 }
 }
 
 // Enter an infinite loop, just incrementing a counter
 
 return 0 ;
 }
 
 由于本人不是软件出身,都是临时学习的,所以不是很规范,肯定会有些问题的,还希望大家给些知道建议,说到这,有几个问题咨询下大家,
 
 
     
  code.jpg (42.93 KB) 2010-6-22 19:10
 
 
 
 图中出现了很多感叹号,其提示内容为:pointer targets in passing argument 1 of 'UARTSend' differ in signedness
 
 我不太明白,高人指教下。:(
 
 
 
 代码编译通过,没有产生错误。。。。然后进入“小甲虫”模式(debug),打开我的串口调试助手,运行出现以下画面
 
 
     
  com.jpg (60.34 KB) 2010-6-22 19:10
 
 
 
 
 
 程序运行起来了,呵呵,板子正在等待我的命令,然后我发送字母o,打开小灯的操作
 
 
 
 
     
  com-2.jpg (61.29 KB) 2010-6-22 19:10
 
 
 
 
 
 这时板子上的led被点亮了,兴奋下。。。:) 然后再发送c,关闭小灯的命令
 
 
 
 
     
  com-3.jpg (62.67 KB) 2010-6-22 19:10
 
 
 
 
 
 板子上的小灯就关闭了,呵呵,简单的控制完成了!!
 
 这是我的第一个“控制流”,后续会继续完善其他LPC1343的测试。
 
 
 
 心得体会:综合了前面学习的知识,参考了版主tiankai001的学习帖子,再融合一下自己的想法,完成了这次的调试实验。
 
 关键是要找到一个应用点,然后根据这个应用来武装自己的LPC1343板子,从硬件到软件,这样学习的效率会
 
 更高,后续我将调试i2c接口,这样又可以增强趣味了呵呵,希望大家一起努力!
 | 
 |