教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教育文库 >

燕山大学暑期校内实习stm8h程序集合

来源:网络收集 时间:2024-05-20
导读: 关于stm8的编程,功能实现 燕山大学暑期校内实习程序合集 ① 一个小灯亮灭 #includestm8s.h void main(void) { GPIO_DeInit( GPIOD);//恢复指定端口 GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_SLOW); while(1) { GPIO_WriteLow( GPIOD, GPIO_PIN_0

关于stm8的编程,功能实现

燕山大学暑期校内实习程序合集

① 一个小灯亮灭

#include"stm8s.h"

void main(void)

{

GPIO_DeInit( GPIOD);//恢复指定端口

GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_SLOW); while(1)

{

GPIO_WriteLow( GPIOD, GPIO_PIN_0 );/*PD0口输出低电平*/

}

}

② 小灯闪烁

#include"stm8s.h"//头文件

void delay(u32 i)/*延时子程序*/

{

u32 j;

for(j=0;j<i;j++)

{;}

}

void main(void)//主程序头

{

GPIO_DeInit( GPIOD);//选pd口

GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_LOW_SLOW);//低4位低电平0亮

while(1)//死循环

{

GPIO_WriteLow( GPIOD, GPIO_PIN_LNIB );/*PD0口输出低电平灯亮*/ delay(20000);//延时

GPIO_WriteHigh( GPIOD, GPIO_PIN_LNIB );//输出高电平灯灭

delay(5000);//延时

}}

关于stm8的编程,功能实现

③ 左移流水灯

#include"stm8s.h"//头文件

void delay(u32 i)/*延时子程序*/

{

u32 j;

for(j=0;j<i;j++)

{;}

}

void main(void)//主程序头

{

GPIO_DeInit(GPIOD);//初始化pd口

GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_LOW_SLOW);//低4位低电平0亮

while(1)//大循环

{

u8 n=0xfe;//付初值1111 1110

for(int m=0;m<4;m++)

{

GPIO_Write(GPIOD,n);//翻转

delay(5000);//延时

n=n<<1;//左移

n=n+1;//灭前一个灯

}

}

}

④ 数组流水灯

#include"stm8s.h"//头文件

void delay(u32 i)/*延时子程序*/

{

u32 j;

for(j=0;j<i;j++)

{;}

}

void main(void)//主程序头

关于stm8的编程,功能实现

GPIO_DeInit(GPIOD);//初始化pd口

GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_LOW_SLOW);//低4位低电平0亮

unsigned char num[4]={0xfe,0xfd,0xfb,0xf7};

while(1)//循环

{

for(int i=0;i<4;i++)

{

GPIO_Write(GPIOD,num[i]);//分别给高4位和低4位PD口赋值

delay(50000);//延时

}

}

}

⑤ 小灯变频闪烁

#include"stm8s.h"//头文件

void delay(u32 i)/*延时子程序*/

{

u32 j;

for(j=0;j<i;j++)

{;}

}

void main(void)//主程序头

{

GPIO_DeInit( GPIOD);//初始化pd口

GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_LOW_SLOW);//低4位低电平0亮

while(1)//大循环

{

int x=10;

for(int y=0;y<x;y++)

{

GPIO_WriteReverse( GPIOD, GPIO_PIN_LNIB );//翻转灯亮灭

delay(50000);//延时

关于stm8的编程,功能实现

}

int m=10;

for(int n=0;n<m;n++)

{

GPIO_WriteReverse( GPIOD, GPIO_PIN_LNIB );//翻转灯亮灭

delay(5000);//延时

}

}

}

⑥ 查询法TIM2精确控制小灯闪烁

//小灯闪烁

#include"stm8s.h"//头

void delay_ms(u16 i)

{

TIM2_DeInit();

TIM2_TimeBaseInit(TIM2_PRESCALER_2,1000);

while(i--)

{

TIM2_Cmd(ENABLE);

while(TIM2_GetFlagStatus(TIM2_FLAG_UPDATE)!=1);

TIM2_ClearFlag(TIM2_FLAG_UPDATE);

TIM2_Cmd(DISABLE);

}

}

void main(void)//主程序头

{

GPIO_DeInit( GPIOD);//选pd口

GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_LOW_SLOW);//灯亮

while(1)//死循环

{

关于stm8的编程,功能实现

GPIO_WriteReverse(GPIOD, GPIO_PIN_LNIB);//灯翻转亮灭

delay_ms(500);//延时

}

}

⑦ TIM2精确控制流水灯(查询法)

//改变小灯闪烁频率

#include"stm8s.h"//头

void delay_ms(u16 i)

{

TIM2_DeInit();

TIM2_TimeBaseInit(TIM2_PRESCALER_2,1000);

while(i--)

{

TIM2_Cmd(ENABLE);

while(TIM2_GetFlagStatus(TIM2_FLAG_UPDATE)!=1);

TIM2_ClearFlag(TIM2_FLAG_UPDATE);

TIM2_Cmd(DISABLE);

}

}

void main(void)//主程序头

{

GPIO_DeInit( GPIOD);//选pd口

GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_OD_LOW_SLOW);

while(1)//死循环

{ u8 n=0xfe;

for (int i=0;i<4;i++)

{

GPIO_Write(GPIOD, n);

delay_ms(500);

n=n<<1;

n=n+1;}

}

关于stm8的编程,功能实现

}

⑧ TIM2实现精确延时流水灯

#include"stm8s.h"//

void delay_ms(u16 i)

{

TIM2_DeInit();

TIM2_TimeBaseInit(TIM2_PRESCALER_2,1000);

while(i--)

{

TIM2_Cmd(ENABLE);

while(TIM2_GetFlagStatus(TIM2_FLAG_UPDATE)!=1);

TIM2_ClearFlag(TIM2_FLAG_UPDATE);

TIM2_Cmd(DISABLE);

}

}

void main(void)//主程序头

{

u8 n;

GPIO_DeInit( GPIOD);//选pd口

GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_OD_LOW_SLOW);

while(1)//死循环

{

n=0xfe;

for (int i=0;i<4;i++)

{

GPIO_Write(GPIOD, n);

delay_ms(500);

n=n<<1;

n=n+1;}

}

}

关于stm8的编程,功能实现

⑨ TIM2控制灯亮灭(中断)

#include"stm8s.h"

u16 i=0;

/************定时器2的配置******/

void TIM2_Configuration(void)

{

TIM2_DeInit(); //TIM2初始化

TIM2_TimeBaseInit(TIM2_PRESCALER_2, 2000);//预分频2,计数值2000,即2ms

TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);//更新模式,开中断

TIM2_Cmd(ENABLE);//开启TIM2

enableInterrupts(); //开总中断

}

/**********IO口初始化***********************/

void GPIO_Configuration(void)

{

GPIO_DeInit(GPIOB);

GPIO_Init(GPIOB, GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_LOW_FAST);

}

void main() //主函数

{

TIM2_Configuration();

GPIO_Configuration();

while(1);

}

#pragma vector =15//TIM2中断入口

__interrupt void TIMER2_IRQHander(void)

{

i++;

if(i==250)

{

GPIO_WriteReverse(GPIOB, GPIO_PIN_LNIB);

关于stm8的编程,功能实现

i=0;

}

TIM2_ClearITPendingBit(TIM2_IT_UPDATE);

}

⑩ 中断控制按键实现小灯变频

#include"stm8s.h"

void delay_ms(u16 i);

u8 t=1;

/*****************引脚配置**************************/

void GPIO_configurating(void)

{

GPIO_DeInit(GPIOB);

GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_IN_PU_IT );

GPIO_DeInit(GPIOD);

GPIO_Init(GPIOD,GPIO_PIN_LNIB, GPIO_MODE_OUT_PP_HIGH_FAST);

}

/******************定时器配置************************/

void exit()

{

EXTI_DeInit();

EXTI_SetExtIntSensitivity( EXTI_PORT_GPIOB, EXTI_SENSITIVITY_RISE_ONLY);//配置中断模式

enableInterrupts();//开总中断

}

void main()

{

CLK_DeInit();

exit();

关于stm8的编程,功能实现

GPIO_configurating();

while(1)

{

if(t==1)

{

GPIO_WriteReverse(GPIOD, GPIO_PIN_0);

delay_ms(250);

}

if(t==2)

{

GPIO_WriteReverse(GPIOD, GPIO_PIN_0);

delay_ms(500);

}

if(t==3)

{

GPIO_WriteReverse(GPIOD, GPIO_PIN_0);

delay_ms(1000);

}

if(t>3)

{

t=1;

}

}

}

#pragma vector=6

__interrupt void Exit_portb_irqhander(void)

{

t=t+1;

while(!(GPIO_ReadInputPin(GPIOB, GPIO_PIN_0) ))

{;}//循环执行

}

void delay_ms(u16 i)//精确定时

{

TIM2_DeInit();

TIM2_TimeBaseInit(TIM2_PRESCALER_2, 1000);//1ms

while(i--)

{

TIM2_Cmd(ENABLE);

关于stm8的编程,功能实现

while( TIM2_GetFlagStatus(TIM2_FLAG_UPDATE)!=1);

TIM2_ClearFlag( TIM2_FLAG_UPDATE);

TIM2_Cmd(DISABLE);

}

}

11 时钟分频

#include"stm8s.h"

void delay(u32 i);//函数声明

void main()//函数入口

{

CLK_DeInit();

GPIO_DeInit(GPIOD);//PD口置位

GPIO_Init(GPIOD, GPIO_PIN_LNIB, GPIO_MODE_OUT_OD_LOW_SLOW); /*PD口初始化,PD口的低四位,模式为开漏输出,低电平,慢速*/

while(1)

{

CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV8 );

int k=5;

int m;

for(m=0;m<k;m++)

{

GPIO_WriteLow(GPIOD, GPIO_PIN_LNIB );//PD的低四位置0 delay(10000);//延时

GPIO_WriteHigh(GPIOD, GPIO_PIN_LNIB);//PD的低四位置1 delay(10000);//延时

}

CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2 );

int i=5;

int j;

for(j=0;j<i;j++)

{

关于stm8的编程,功能实现

GPIO_WriteLow(GPIOD, GPIO_PIN_LNIB );//PD的低四位置0 delay(10000);//延时

GPIO_WriteHigh(GPIOD, GPIO_PIN_LNIB);//PD的低四位置1 delay(10000);//延时

}

}

}

void delay(u32 i)//延时子程序

{

u32 j;

for(j=0;j<i;j++)

{;}

}

12 查询法控制按键

#include<stm8s.h>

void delay(u32 s);

void main(void)

{

GPIO_DeInit(GPIOB);

GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_OUT_PP_HIGH_FAST);//初始化端口,包括端口B引脚0

GPIO_Init(GPIOB, GPIO_PIN_1,GPIO_MODE_IN_PU_NO_IT);//初始化端口,包括端口B引脚1

while(1)

{

if(!(GPIO_ReadInputPin(GPIOB, GPIO_PIN_1)))

{

delay(10); //去抖

if(!(GPIO_ReadInputPin(GPIOB, GPIO_PIN_1)))//松手检测

{

GPIO_WriteReverse(GPIOB, GPIO_PIN_0);

while( !(GPIO_ReadInputPin(GPIOB, GPIO_PIN_1)) );//检验按键是否结束

}

}

}

}

void delay(u32 s)//延时子程序

{

关于stm8的编程,功能实现

u32 i,j;

for(i=s;i>0;i--)

for(j=110;j>0;j--);

}

13 按键改变小灯闪烁变频(查询法)

/*按键改变小灯闪烁频率*/

#include "stm8s.h"

#define uint unsigned int

#define uchar unsigned char

uint i=0;

void GPIO_INIT();

void Delay(uint del);

uchar key();

void main()

{

GPIO_INIT();

while(1)

{

key();

switch(i)

{

case 0:

GPIO_WriteLow(GPIOD, GPIO_PIN_0);//第0位给0

GPIO_WriteHigh(GPIOD, GPIO_PIN_1);

GPIO_WriteHigh(GPIOD, GPIO_PIN_2);

GPIO_WriteHigh(GPIOD, GPIO_PIN_3);

break;

case 1:

GPIO_WriteLow(GPIOD, GPIO_PIN_1);//第1位给0

GPIO_WriteHigh(GPIOD, GPIO_PIN_0);

GPIO_WriteHigh(GPIOD, GPIO_PIN_2);

GPIO_WriteHigh(GPIOD, GPIO_PIN_3);

break;

case 2:

GPIO_WriteLow(GPIOD, GPIO_PIN_2);//第2位给0 GPIO_WriteHigh(GPIOD, GPIO_PIN_0);

关于stm8的编程,功能实现

GPIO_WriteHigh(GPIOD, GPIO_PIN_1);

GPIO_WriteHigh(GPIOD, GPIO_PIN_3);

break;

case 3:

GPIO_WriteLow(GPIOD, GPIO_PIN_3);//第3位给0

GPIO_WriteHigh(GPIOD, GPIO_PIN_0);

GPIO_WriteHigh(GPIOD, GPIO_PIN_1);

GPIO_WriteHigh(GPIOD, GPIO_PIN_2);

break;

}

}

}

void GPIO_INIT()//初始化端口D

{

GPIO_DeInit(GPIOD);

GPIO_Init(GPIOD,GPIO_PIN_ALL, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_Init(GPIOB,GPIO_PIN_1, GPIO_MODE_IN_PU_NO_IT );

}

void Delay(uint del)//延时10ms

{

uint i1,j;

for(i1=0; i1<del; i1++)

for(j=0; j<1827; j++);

}

uchar key()

{

if(!(GPIO_ReadInputPin( GPIOB, GPIO_PIN_1)) )

{

Delay(2); //20毫秒软件防抖

if(!(GPIO_ReadInputPin( GPIOB, GPIO_PIN_1)))

{

i++;

if(i==4)

{

i=0;

}

Delay(100);

}

}

return i;

关于stm8的编程,功能实现

14 按键实现流水灯的控制

#include "stm8s.h"

#define uint unsigned int

#define uchar unsigned char

uint i=0;

void GPIO_INIT();

void Delay(uint del);

uchar key();

void main()

{

GPIO_INIT();

while(1)

{

key();

switch(i)

{

case 0:

GPIO_WriteHigh(GPIOD, GPIO_PIN_LNIB);//4口全给1

break;

case 1:

GPIO_Write(GPIOD, 0xfe);//PD0口给0

break;

case 2:

GPIO_Write(GPIOD, 0xfd);

break;

case 3:

GPIO_Write(GPIOD, 0xfb);

break;

case 4:

GPIO_Write(GPIOD, 0xf7);

break;

case 5:

GPIO_WriteLow(GPIOD, GPIO_PIN_LNIB);

break;

}

}

}

void GPIO_INIT()//初始化端口D

关于stm8的编程,功能实现

GPIO_DeInit(GPIOD);

GPIO_Init(GPIOD,GPIO_PIN_ALL, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_Init(GPIOB,GPIO_PIN_1, GPIO_MODE_IN_PU_NO_IT );

}

void Delay(uint del)//延时10ms

{

uint i1,j;

for(i1=0; i1<del; i1++)

for(j=0; j<1827; j++);

}

uchar key()

{

if(!(GPIO_ReadInputPin( GPIOB, GPIO_PIN_1)) )

{

Delay(10); //20毫秒软件防抖

if(!(GPIO_ReadInputPin( GPIOB, GPIO_PIN_1)))

{

i++;

if(i==6)

{

i=0;

}

Delay(200);

}

}

return i;

}

15 按键实现灯亮 ,闪,停,流水

/*查询 按键改变小灯频率*/

#include "stm8s.h"

#define uint unsigned int

#define uchar unsigned char

uint i=0;

void GPIO_INIT();//初始化

void Delay(uint del);//延时声明

uchar key();

u8 m=0xfe;

u8 n=0;

关于stm8的编程,功能实现

void main()//主函数入口

{

GPIO_INIT();//调用函数

while(1)//大循环

{

key();

switch(i)

{

case 0:

GPIO_WriteLow(GPIOD, GPIO_PIN_LNIB);

break;

/***************流水灯*******************/

case 1:

if(n<4)

{

GPIO_Write(GPIOD,m);//翻转

Delay(50);//延时

m=m<<1;//左移

m=m+1;//灭前一个灯

n++;

}

else

{ n=0;m=0xfe;}

break;

case 3:

GPIO_WriteReverse(GPIOD, GPIO_PIN_LNIB);//PD1端口给0

Delay(50);

break;

case 2:

GPIO_WriteHigh(GPIOD, GPIO_PIN_LNIB);//4口全给1 break;

}

}

}

燕山大学暑期校内实习stm8h程序集合.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1806071.html(转载请注明文章来源)
Copyright © 2020-2021 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)