完善资料让更多小伙伴认识你,还能领取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个回答
|
|
求大神告知为什么外部中断无法进入啊
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2162 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1997 浏览 3 评论
4593 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2140 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2659 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 13:11 , Processed in 0.603411 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号