图6-2 跑马灯工程框架图
1. #include "SWM320.h" 2. 3. void Delay(void) 4. { 5. for(uint16_ti = 0; i < 5000; i++) 6. { 7. for(uint16_tj = 0; j < 1000; j++); 8. } 9. } 10. 11. intmain(void) 12. { 13. SystemInit(); 14. 15. GPIO_Init(GPIOM, PIN0, 1, 0, 0); // 输出, 接LED 16. GPIO_Init(GPIOM, PIN5, 1, 0, 0); // 输出, 接LED 17. GPIO_Init(GPIOP, PIN12, 1, 0, 0); // 输出, 接LED 18. GPIO_Init(GPIOP, PIN22, 1, 0, 0); // 输出, 接LED 19. 20. while(1) 21. { 22. GPIO_ClrBit(GPIOM, PIN0); // 点亮LED小灯 23. Delay(); 24. GPIO_SetBit(GPIOM, PIN0); // 熄灭LED小灯 25. GPIO_ClrBit(GPIOM, PIN5); // 点亮LED小灯 26. Delay(); 27. GPIO_SetBit(GPIOM, PIN5); // 熄灭LED小灯 28. GPIO_ClrBit(GPIOP, PIN12); // 点亮LED小灯 29. Delay(); 30. GPIO_SetBit(GPIOP, PIN12); // 熄灭LED小灯 31. GPIO_ClrBit(GPIOP, PIN22); // 点亮LED小灯 32. Delay(); 33. GPIO_SetBit(GPIOP, PIN22); // 熄灭LED小灯 34. } 35. } 如果前面的内容读者都已经很好的掌握了,这几十行程序应该不难理解,如果读者没有掌握,那接下来笔者为读者简单分析一下这35行语句。 第1行,包含SWM320的头文件,只有包含了这个头文件,才能正确运用库函数,前面讲解库函数的时候和读者有讲述,其各个寄存器的映射地址、结构体指针等都包含在这个头文件中。还有“SWM320_gpio.c”、“SWM320_port.c”两个文件的头文件包含,都是在第1行这个头文件中被包含进来的,如果读者想深入研究,可以选中头文件,右键单击,再选中第二个选项打开该头文件,仔细研读这几千行代码,笔者不建议这么做哈。 第3~9行,是一个简单的延时函数,这个我们在学习51的时候经常用,原理这里不赘。 第13行,这是系统的时钟初始化函数,函数的原型在“system_SWM320.c”中,这个函数我们在后面为读者讲述,这里读者可理解为“空气”。 第15~18行,这个函数我们在5.4节做了详细的讲述,目的是将接LED小灯的4个端口设置为输出端口,而且不使能上、下拉电阻。 第22行,使GPIOM.0端口输出低电平,这样在LED小灯两端形成压差,即可点亮LED小灯。函数原型在“SWM320_gpio.c”中,具体内容后面再述。 第24行,使GPIOM.0端口输出高电平,这样LED小灯两端电平一样,没有压差,LED小灯熄灭。函数原型在“SWM320_gpio.c”中,细节后面再述,剩余行同理,读者自行理解。
|