完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
程序在附件也有
#include #include #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(); } |
|
相关推荐
2个回答
|
|
没有清中断标记吧
|
|
|
|
STM8在关闭总中断后仍然响应外部中断的原因可能是:
1. 外部中断配置问题:即使总中断被关闭,如果外部中断的配置仍然处于激活状态,它仍然可以响应外部事件。请检查您的代码,确保在关闭总中断之前,您已经正确地配置了外部中断。 2. 代码中的其他中断服务例程:请检查您的代码,确保没有其他中断服务例程(ISR)在运行,这可能会导致程序响应外部中断。 3. 硬件问题:如果上述两个原因都排除了,那么可能是硬件问题。请检查您的STM8微控制器和外部中断引脚,确保它们没有短路或损坏。 关于您提供的代码片段,它包含了一些变量定义和两个延时函数(Delay_10ms 和 Delay_200ms)。这些函数使用循环来实现延时,但它们与STM8响应外部中断的问题无关。为了解决外部中断的问题,请检查您的中断配置和中断服务例程。 如果您需要进一步的帮助,请提供更多关于您的STM8项目和中断配置的详细信息。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1658 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1568 浏览 1 评论
996 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
695 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1616 浏览 2 评论
1876浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
662浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
528浏览 3评论
547浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
517浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 06:01 , Processed in 0.868130 second(s), Total 84, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号