stm8s的c语言编程例程

loading 分享 2026-8-10 下载文档

#pragma vector=15

__interrupt void TIM2_UPD_OVF_BRK_IRQHandler (void) {

GPIO_WriteReverse(GPIOD, GPIO_PIN_2); TIM2_ClearITPendingBit(TIM2_IT_UPDATE); }

//////////通用寄存器TIM2,3,5既然这样应该没有太大的区别 #pragma vector=6

__interrupt void EXIT_PORTB_IRQHander(void) {

if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_1)==0x00) {

temp++; if(temp%2==0) TIM2_Cmd(ENABLE); else

TIM2_Cmd(DISABLE); } }

/*************程序实现功能:按键控制灯以不同的频率闪动***************/ /************即实现功能为,发光二极管分别以1S,2S,3S的周期闪烁*******/ #include \

#define uchar unsigned char #define uint unsigned int #define ulong unsigned long unsigned int temp; void delay(ulong i) {

ulong j;

for(j=0;j

void CLK_Configuration(void); void GPIO_Configuration(void); void TIM2_Configuration(void); void EXIT_Configuration(void); void main(void) {

CLK_Configuration();

GPIO_Configuration(); EXIT_Configuration(); TIM2_Configuration(); enableInterrupts(); while (1) { } }

void CLK_Configuration(void) {

CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); }

void GPIO_Configuration(void) {

GPIO_DeInit(GPIOB); GPIO_DeInit(GPIOD);

GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_Init(GPIOB, GPIO_PIN_1, GPIO_MODE_IN_FL_IT); }

void TIM2_Configuration(void) {

TIM2_DeInit();///设置timer2定时器 TIM2_TimeBaseInit( TIM2_PRESCALER_2048 ,8000); /*对TIM2时钟进行预分频得到计数时钟 */

TIM2_ITConfig(TIM2_IT_UPDATE ,ENABLE); /*允许更新中断使能*/

// TIM2_GenerateEvent(TIM2_EVENTSOURCE_UPDATE); /*设置事件源为更新事件*/

// TIM2_UpdateRequestConfig(TIM2_UPDATESOURCE_REGULAR );/*更新请求使能,只有当计数器溢出时产生更新中断*/

// TIM2_SelectOnePulseMode( TIM2_OPMODE_REPETITIVE ); /*发生更新事件时计数器不停止*/

TIM2_SetCounter(65536-8000); /*16位向上计数器初值*/

TIM2_Cmd(ENABLE); /*使能计数器*/ }

void EXIT_Configuration(void) {

EXTI_DeInit();

EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB, EXTI_SENSITIVITY_FALL_ONLY); }

/*TIM2定时/向上溢出中断编号为13,中断编号+2*/ #pragma vector=15

__interrupt void TIM2_UPD_OVF_BRK_IRQHandler (void) {

GPIO_WriteReverse(GPIOD, GPIO_PIN_2); TIM2_ClearITPendingBit(TIM2_IT_UPDATE); }

//////////通用寄存器TIM2,3,5既然这样应该没有太大的区别 #pragma vector=6

__interrupt void EXIT_PORTB_IRQHander(void) {

if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_1)==0x00) {

temp++;

if(temp%2!=0)

TIM2_Cmd(DISABLE); else {

TIM2_Cmd(ENABLE);/////////////注意使能位的开通一定不要丢掉了 switch(temp) {

case 2:TIM2_TimeBaseInit( TIM2_PRESCALER_2048 ,8000);break; case 4:TIM2_TimeBaseInit( TIM2_PRESCALER_4096 ,8000);break; case 6:TIM2_TimeBaseInit( TIM2_PRESCALER_8192 ,8000);break; default:TIM2_TimeBaseInit( TIM2_PRESCALER_2048 ,8000),temp=1; } } } }

以下这个程序与上相同:

/*************程序实现功能:按键控制灯以不同的频率闪动*******************/

#include \

#define uchar unsigned char #define uint unsigned int

#define ulong unsigned long unsigned int temp; void delay(ulong i) {

ulong j;

for(j=0;j

void CLK_Configuration(void); void GPIO_Configuration(void); void TIM2_Configuration(void); void EXIT_Configuration(void); void main(void) {

CLK_Configuration(); GPIO_Configuration(); EXIT_Configuration(); TIM2_Configuration(); enableInterrupts(); while (1) { } }

void CLK_Configuration(void) {

/* Fmaster = 16MHz */

CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); }

void GPIO_Configuration(void) {

/* GPIOD reset */ GPIO_DeInit(GPIOB); GPIO_DeInit(GPIOD);

/* Configure PD1 (LED1) as output push-pull low (led switched on)10MHZ */

GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_Init(GPIOB, GPIO_PIN_1, GPIO_MODE_IN_FL_IT); }

void TIM2_Configuration(void)


stm8s的c语言编程例程.doc 将本文的Word文档下载到电脑
搜索更多关于: stm8s的c语言编程例程 的文档
相关推荐
相关阅读