|
程序在附件也有 #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
STM8S103飞线外接芯片,I2C不能得到slaveAddress应答,通讯失败。
测试标签123
IAR FOR ARM和IAR FOR STM8无法共存,
STM8L052,液晶内部电源怎么用?
STM8S105C6T6 UART2串口,能接收数据,不能发送数据
STM8S105K4 串口2 无奇偶校验,也能接收 偶校验的 数据
在STM8S的IAP使用中断和APP使用中断问题
STM8L151 SMBUS设计
STM8S103F复位异常
STM8L的LCD调试时不亮
微信公众号
手机版
评分
查看全部评分
评分
查看全部评分
推荐个链接阅读下:一个关于STM8中断应用异常的话题 一个关于STM8中断应用异常的话题
评分
查看全部评分
评分
查看全部评分
总中断是在MAIN函数之前才有用的,在其他地方使用关总中断是没起作用的。因为中断级别大于main函数的级别,所以关总中断失效。所以最好是清掉这个标记位。。
评分
查看全部评分