程序在附件也有 #include <stm8s.h> #include <stm8s_exti.h> #define uchar unsigned char #define uint unsigned int uint curtain1_down,curtain1_up,curtain2_down,curtain2_up,K1,K2,K3; void Delay_10ms() { uint y; for(y=6150; y>0; y--)//10ms=6150 { } } void Delay_200ms() { uint x,y; for(x=20; x>0; x--)//200ms=20 { for(y=6150; y>0; y--)//1ms=615 { } } } void Delay_50ms() { uint x,y; for(x=5; x>0; x--)//200ms=20 { for(y=6150; y>0; y--)//1ms=615 { } } } void main(void) { K1=0; K2=0; K3=0; curtain1_down=0; curtain2_down=0; curtain1_up=0; curtain2_up=0; GPIO_DeInit(GPIOC); GPIO_DeInit(GPIOB); GPIO_DeInit(GPIOD); GPIO_Init(GPIOC,GPIO_PIN_1,GPIO_MODE_OUT_PP_LOW_SLOW); GPIO_Init(GPIOC,GPIO_PIN_2,GPIO_MODE_OUT_PP_LOW_SLOW); GPIO_Init(GPIOC,GPIO_PIN_3,GPIO_MODE_OUT_PP_LOW_SLOW); GPIO_Init(GPIOC,GPIO_PIN_4,GPIO_MODE_OUT_PP_LOW_SLOW); GPIO_Init(GPIOC,GPIO_PIN_5,GPIO_MODE_OUT_PP_LOW_SLOW); GPIO_Init(GPIOC,GPIO_PIN_6,GPIO_MODE_OUT_PP_LOW_SLOW); GPIO_Init(GPIOC,GPIO_PIN_7,GPIO_MODE_OUT_PP_LOW_SLOW); disableInterrupts(); GPIO_Init(GPIOB,GPIO_PIN_1,GPIO_MODE_IN_PU_IT); GPIO_Init(GPIOB,GPIO_PIN_2,GPIO_MODE_IN_PU_IT); GPIO_Init(GPIOB,GPIO_PIN_3,GPIO_MODE_IN_PU_IT); GPIO_Init(GPIOB,GPIO_PIN_4,GPIO_MODE_IN_PU_IT); GPIO_Init(GPIOB,GPIO_PIN_5,GPIO_MODE_IN_PU_IT); GPIO_Init(GPIOB,GPIO_PIN_6,GPIO_MODE_IN_PU_IT); GPIO_Init(GPIOB,GPIO_PIN_7,GPIO_MODE_IN_PU_IT); CLK_HSIPrescalerConfig( CLK_PRESCALER_HSIDIV8); EXTI_DeInit(); EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB , EXTI_SENSITIVITY_FALL_ONLY); enableInterrupts(); while(1) { } } INTERRUPT_HANDLER(EXTI_PORTB_IRQHandler,4) { disableInterrupts(); Delay_50ms(); if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_7)==0x00)//窗帘1降 { curtain1_down=curtain1_down+1; if(curtain1_down==1) { curtain1_up=0; GPIO_WriteLow(GPIOC, GPIO_PIN_6); Delay_200ms(); GPIO_WriteHigh(GPIOC, GPIO_PIN_7); } if(curtain1_down==2) { curtain1_down=0; curtain1_up=0; GPIO_WriteLow(GPIOC, GPIO_PIN_6); GPIO_WriteLow(GPIOC, GPIO_PIN_7); } } if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_6)==0x00)//窗帘1升 { curtain1_up=curtain1_up+1; if(curtain1_up==1) { curtain1_down=0; GPIO_WriteLow(GPIOC, GPIO_PIN_7); Delay_200ms(); GPIO_WriteHigh(GPIOC, GPIO_PIN_6); } if(curtain1_up==2) { curtain1_up=0; curtain1_down=0; GPIO_WriteLow(GPIOC, GPIO_PIN_7); GPIO_WriteLow(GPIOC, GPIO_PIN_6); } } if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_5)==0x00)//窗帘2降 { curtain2_down=curtain2_down+1; if(curtain2_down==1) { curtain2_up=0; GPIO_WriteLow(GPIOC, GPIO_PIN_4); Delay_200ms(); GPIO_WriteHigh(GPIOC, GPIO_PIN_5); } if(curtain2_down==2) { curtain2_down=0; curtain2_up=0; GPIO_WriteLow(GPIOC, GPIO_PIN_4); GPIO_WriteLow(GPIOC, GPIO_PIN_5); } } if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_4)==0x00)//窗帘2升 { curtain2_up=curtain2_up+1; if(curtain2_up==1) { curtain2_down=0; GPIO_WriteLow(GPIOC, GPIO_PIN_5); Delay_200ms(); GPIO_WriteHigh(GPIOC, GPIO_PIN_4); } if(curtain2_up==2) { curtain2_up=0; curtain2_down=0; GPIO_WriteLow(GPIOC, GPIO_PIN_5); GPIO_WriteLow(GPIOC, GPIO_PIN_4); } } if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_3)==0x00) { K1=K1+1; if(K1==1) { GPIO_WriteHigh(GPIOC, GPIO_PIN_3); } if(K1==2) { K1=0; GPIO_WriteLow(GPIOC, GPIO_PIN_3); } } if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_2)==0x00) { K2=K2+1; if(K2==1) { GPIO_WriteHigh(GPIOC, GPIO_PIN_2); } if(K2==2) { K2=0; GPIO_WriteLow(GPIOC, GPIO_PIN_2); } } if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_1)==0x00) { K3=K3+1; if(K3==1) { GPIO_WriteHigh(GPIOC, GPIO_PIN_1); } if(K3==2) { K3=0; GPIO_WriteLow(GPIOC, GPIO_PIN_1); } } // enableInterrupts(); } |
STM8S103K3.rar
下载1.16 MB, 下载次数: 15, 下载积分: ST金币 -1
stm8s003 adc中断和通道切换的问题
adc施密特触发器stm8
stm8l051f3 TSSOP20 封装,待机模式下,2天后,电流突然增加到140UA
STM8S用STVP烧录怎么加密?
如何使用ST官网例程_LIN总线通讯_STM8AF
STM8 LIN
IAR代码编辑太费劲了,想问一下有没有好的方法,试了VScode但是头文件老是报错,调了很久也没调好,想换个方法了。
想问一下各位大佬,IAR下载调试代码时出现 warning: is an illegal data sample expression IAR是什么意思啊?
STM8S标准库TIM1编码器功能不计数,请大师帮我看看
cosmic stm8 license网页申请按键没反应,可能是什么原因?
评分
查看全部评分
评分
查看全部评分
推荐个链接阅读下:一个关于STM8中断应用异常的话题 一个关于STM8中断应用异常的话题
评分
查看全部评分
评分
查看全部评分
总中断是在MAIN函数之前才有用的,在其他地方使用关总中断是没起作用的。因为中断级别大于main函数的级别,所以关总中断失效。所以最好是清掉这个标记位。。
评分
查看全部评分