与前些日子写的用汇编语言进行的实验一样,从今天开始,要在ST的三合一开发板上,用C语言编写程序,进行一系列的实验。 首先当然从最简单的LED指示灯闪烁的实验开始。 开发板上的LED1接在STM8的PD3上,因此要将PD3设置成输出模式,为了提高高电平时的输出电流,要将其设置成推挽输出方式。这主要通过设置对应的DDR/CR1/CR2寄存器实现。 利用ST的开发工具,先生成一个C语言程序的框架,然后修改其中的main.c,修改后的代码如下。 编译通过后,下载到开发板,运行程序,可以看到LED1在闪烁,且闪烁的频率为5HZ。 /*MAIN.C file * *Copyright (c) 2002-2005 STMicroelectronics */ #include"STM8S207C_S.h" //函数功能:延时函数 //输入参数:ms -- 要延时的毫秒数,这里假设CPU的主频为2MHZ //输出参数:无 //返 回 值:无 //备 注:无 voidDelayMS(unsigned int ms) { unsigned char i; while(ms != 0) { for(i=0;i<250;i++) { } for(i=0;i<75;i++) { } ms--; } } //函数功能:主函数 // 初始化GPIO端口PD3,驱动PD3为高电平和低电平 //输入参数:ms -- 要延时的毫秒数,这里假设CPU的主频为2MHZ //输出参数:无 //返 回 值:无 //备 注:无 main() { PD_DDR = 0x08; PD_CR1 =0x08; // 将PD3设置成推挽输出 PD_CR2 = 0x00; while(1) { PD_ODR = PD_ODR | 0x08; // 将PD3的输出设置成1 DelayMS(100); // 延时100MS PD_ODR = PD_ODR & 0xF7; // 将PD3的输出设置成0 DelayMS(100); // 延时100MS } }
|