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

damme50_vn

Học sinh trung cấp
#41
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++;
}
}
như thế không được anh ạ :( phải có GPIO_PIN em thử mấy cách thế mà không được :-j:-j
 

NTT123456

Học sinh phổ thông
#42
Cho mình hỏi hàm xử lý ngắt thì dùng hàm EXTI1_IRQHandler hay HAL_GPIO_EXTI_Callback vậy. Xem hướng dẫn mỗi chỗ một kiểu. Và 2 hàm trên khác gì nhau?
 

10118015

Sinh viên đại học
#43
nếu bạn không rõ về thư viện Hal thì nên chuyển qua STD đi vì đa phần mọi người đang dùng nó và còn biết mà chỉ, với code ở trên #34 ngắt cực kỳ chính xác kể cả nút nhấn mà ko phải chống dội.
 

10118015

Sinh viên đại học
#45
Cho mình hỏi hàm xử lý ngắt thì dùng hàm EXTI1_IRQHandler hay HAL_GPIO_EXTI_Callback vậy. Xem hướng dẫn mỗi chỗ một kiểu. Và 2 hàm trên khác gì nhau?
nó là 2 phiên bản thư viện của ST, HAL ra sau STD
 

damme50_vn

Học sinh trung cấp
#46
nó là 2 phiên bản thư viện của ST, HAL ra sau STD
trong thư viện của stm32f4cube có thư viện stm32f4xx.h cũng có lệnh này anh ạ.

/**
* @brief This function handles Hard fault interrupt.
*/
void EXTI0_IRQHandler(void)
{


/* USER CODE END EXTI0_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
/* USER CODE BEGIN EXTI0_IRQn 1 */

/* USER CODE END EXTI0_IRQn 1 */
}
 

10118015

Sinh viên đại học
#47
sợ cấu hình sai thì đây:

void EXTIX_Init(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;

KEY_Init();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource2);//PE2
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource3);//PE3
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource4);//PE4
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);//PA0

/* EXTI_Line0 */
EXTI_InitStructure.EXTI_Line = EXTI_Line0;//LINE0
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);

/* EXTI_Line2,3,4 */
EXTI_InitStructure.EXTI_Line = EXTI_Line2 | EXTI_Line3 | EXTI_Line4;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);


NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);


NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

}
 

mbed

Kỹ sư
#48
Cho mình hỏi hàm xử lý ngắt thì dùng hàm EXTI1_IRQHandler hay HAL_GPIO_EXTI_Callback vậy. Xem hướng dẫn mỗi chỗ một kiểu. Và 2 hàm trên khác gì nhau?
HAL_GPIO_EXTI_Callback được gọi bởi EXTI1_IRQHandler nên sử dụng một trong hai đều được.
 

NTT123456

Học sinh phổ thông
#49
Trong thư viện chuẩn và thư viện HAL có hàm nào để sử dụng bit banding không anh?
 

10118015

Sinh viên đại học
#50
tự khai báo chứ tôi nghỉ không thư viện nào có, tùy mục đích mà
 

Quảng cáo Google