Hướng dẫn Những vấn đề cơ bản về STM32F103

damme50_vn

Học sinh trung cấp
#31
nhờ các bác xem giùm e code này dùng ngắt ngoài external interrups để toggle_pin và đếm tăng 1 sau mỗi lần nhấn mà sao cứ bị dội phím, em sửa thêm hàm delay phụ vào rồi mà không được @-)@-)@-)
ak hàm delay của em thấy tốc độ là 168Mhz mà e tính ra thì để delay 1 s mà không được nên chỉ tương đối.
hàm ngắt:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin==GPIO_PIN_0)
{
my_delay(10000);
if(GPIO_Pin==GPIO_PIN_0)
{
HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_12|GPIO_PIN_13);
COUNT++;
}
}
}
có code ở phía dưới ạ:
 

Đính kèm

damme50_vn

Học sinh trung cấp
#33
uh anh, e chạy thì nó vẫn hoạt động nhưng có lúc thì nó đếm tăng lên 1 còn nhiều lần nó tăng lên 2,3,có lúc lên 4 luôn. nên ko đúng ạ
 

10118015

Sinh viên đại học
#34
biết vậy, ý là hàm xóa cờ đâu? giống vậy nè (cái này bên thư viện STD):

void EXTI4_IRQHandler(void)
{
delay_ms(10);
if(KEY0==1)
{
LED0=!LED0;
LED1=!LED1;
}
EXTI_ClearITPendingBit(EXTI_Line4);
}
 

huunho

Thạc sỹ
#35
uh anh, e chạy thì nó vẫn hoạt động nhưng có lúc thì nó đếm tăng lên 1 còn nhiều lần nó tăng lên 2,3,có lúc lên 4 luôn. nên ko đúng ạ
sao không mở code mẫu ra xem? học thế này đến bao giờ mới xong hả bạn
 

10118015

Sinh viên đại học
#38
bạn thử lại chưa? giống vậy nè:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
delay_ms(10);
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0))
{

HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_12|GPIO_PIN_13);
COUNT++;
}
}
 

damme50_vn

Học sinh trung cấp
#39
cái này đâu cần, xem code mẫu cho stm32f103 hay bất kỳ con stm32 nào cũng tương tự về ngắt ngoài
ak em vừa mới xem, mà cũng như thế thôi, em còn vướng ở hàm delay với dội nút ấn ạ, mong các bác giúp đỡ ;);)
 

10118015

Sinh viên đại học
#40
ngắt nó ưu tiên nên có chống dội cũng vậy thôi, nó vẫn tương đối khi thêm delay mà thôi.
 

Quảng cáo Google