适合stm8初学者
流水灯控制
源程序
单片机源程序如下:
- /* 添加库函数头文件 */
- #include "stm8s.h"
- #define LED1_ON() GPIO_WriteLow(GPIOD , GPIO_PIN_2) //LED1亮
- #define LED2_ON() GPIO_WriteLow(GPIOC , GPIO_PIN_7) //LED2亮
- #define LED3_ON() GPIO_WriteLow(GPIOC , GPIO_PIN_6) //LED3亮
- #define LED4_ON() GPIO_WriteLow(GPIOC , GPIO_PIN_3) //LED4亮
- #define LED1_OFF() GPIO_WriteHigh(GPIOD , GPIO_PIN_2) //LED1灭
- #define LED2_OFF() GPIO_WriteHigh(GPIOC , GPIO_PIN_7) //LED2灭
- #define LED3_OFF() GPIO_WriteHigh(GPIOC , GPIO_PIN_6) //LED3灭
- #define LED4_OFF() GPIO_WriteHigh(GPIOC , GPIO_PIN_3) //LED4灭
- /*******************************************************************************
- **函数名称:void delay(unsigned int ms) Name: void delay(unsigned int ms)
- **功能描述:大概延时
- **入口参数:unsigned int ms 输入大概延时数值
- **输出:无
- *******************************************************************************/
- void delay(unsigned int ms)
- {
- unsigned int x , y;
- for(x = ms; x > 0; x--) /* 通过一定周期循环进行延时*/
- for(y = 3000 ; y > 0 ; y--);
- }
- /*******************************************************************************
- **函数名称:void InitLED()
- **功能描述:初始化LED函数
- **入口参数:无
- **输出:无
- *******************************************************************************/
- void InitLED()
- {
- //设置PD2为快速推挽输出 ,LED1
- GPIO_Init(GPIOD , GPIO_PIN_2 , GPIO_MODE_OUT_PP_LOW_FAST);
-
- //设置PC7为快速推挽输出 ,LED2
- GPIO_Init(GPIOC , GPIO_PIN_7 , GPIO_MODE_OUT_PP_LOW_FAST);
-
- //设置PC6为快速推挽输出 ,LED3
- GPIO_Init(GPIOC , GPIO_PIN_6 , GPIO_MODE_OUT_PP_LOW_FAST);
-
- //设置PC3为快速推挽输出 ,LED4
- GPIO_Init(GPIOC , GPIO_PIN_3 , GPIO_MODE_OUT_PP_LOW_FAST);
- }
- /* 主函数 */
- int main(void)
- {
- //内部时钟为1分频 = 16Mhz
- CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);
- InitLED(); //调用LED初始化函数
- while(1)
- {
- LED1_ON(); //点亮LED1
- LED2_ON(); //点亮LED2
- LED3_ON(); //点亮LED3
- LED4_ON(); //点亮LED4
- delay(1000); //空跑大概延时
- LED1_OFF(); //点灭LED1
- LED2_OFF(); //点灭LED2
- LED3_OFF(); //点灭LED3
- LED4_OFF(); //点灭LED4
- delay(1000); //空跑大概延时
- }
- }
复制代码
所有资料51hei提供下载:
iar工程.7z
(264.06 KB, 下载次数: 30)
|