完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include "STM8S105K.h"
void run(void); void GPIO_Init(void); void test(void); void InitEXti2(void); void InitEXTI4(void); int a=0,b=0,c=0; void delay(unsigned int t) { while(t--); } void GPIO_Init() { // _asm("sim"); PD_DDR = 0x00; PD_CR1 = 0x00; PD_CR2 = 0x00; //定义PD口为悬浮输入口 PC_DDR = 0x18; PC_CR1 = 0x1c; PC_CR2 = 0x04; PE_DDR = 0x00; PE_CR1 = 0x20; PE_CR2 = 0x20; // _asm("rim"); } void run() { if((PD_IDR & 0x08) == 0x08) { delay(5); if((PD_IDR & 0x08) == 0x08) { if(b <= 1080) { PC_ODR |= 0x08; } } } else { PC_ODR &= 0xf7; } if((PD_IDR & 0x10) == 0x10) { delay(5); if((PD_IDR & 0x10) == 0x10) { if(a <= 1080) { PC_ODR |= 0x10; } } } else { PC_ODR &= 0xef; } } void InitEXTI2(void) { EXTI_CR1 = 0x20; } void InitEXTI4(void) { EXTI_CR2 = 0x01; } @far @Interrupt void EXTI4_IRQHandler1(void) { _asm("sim"); b = b+1; c = 1; if(b == 1080) { a = 0; PC_ODR &= 0xef; PC_ODR &= 0xf7; } _asm("rim"); } @far @interrupt void EXTI2_IRQHandler(void) { _asm("sim"); a = a+1; c = 1; if(a == 1080) { b = 0; PC_ODR &= 0xef; PC_ODR &= 0xf7; } _asm("rim"); } main() { _asm("sim"); GPIO_Init(); InitEXTI2(); InitEXTI4(); _asm("rim"); while (1) { run(); delay(20); } } |
|
相关推荐
2个回答
|
|
求大神告知为什么外部中断无法进入啊
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1248 浏览 1 评论
973 浏览 1 评论
MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记
625 浏览 0 评论
自定义系统时钟频率后,用库函数和微带两种方式点亮LED灯,为什么灯的闪烁频率不一致?
1536 浏览 2 评论
1759 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-23 23:56 , Processed in 0.450084 second(s), Total 43, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号