完善资料让更多小伙伴认识你,还能领取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个回答
|
|
求大神告知为什么外部中断无法进入啊
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32进行DMA数据转运,为什么只有A组最后一位数据被转运到B组去?
1148 浏览 2 评论
1497 浏览 3 评论
1129 浏览 0 评论
嵌入式开发 Win11安装ST-Link 提示 设备描述符请求失败 怎么处理?
1266 浏览 0 评论
1553 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-16 08:24 , Processed in 0.749013 second(s), Total 73, Slave 57 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号