stm32 江科大 疑惑求解 外部中断控制对射式红外传感器计次实验,OLED不亮的问题。
问题描述:main.c里,这句CountSensor_Init();注释掉,OLED正常显示,一加上OLED就黑屏了,这是什么原因啊,网上没找到合适的解答。
源代码附在下面了:
CountSenor.c部分:
#include "stm32f10x.h" // Device header
uint16_t CountSensor_Count;
void CountSensor_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
EXTI_InitTypeDef EXTI_InitStruct;
NVIC_InitTypeDef NVIC_InitStruct;
RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource14);
EXTI_InitStruct.EXTI_Line = EXTI_Line14;
EXTI_InitStruct.EXTI_LineCmd = ENABLE;
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_Init(&EXTI_InitStruct);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStruct.NVIC_IRQChannel= EXTI15_10_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
NVIC_Init(&NVIC_InitStruct);
}
uint16_t CountSensor_Get(void)
{
return CountSensor_Count;
}
void EXTI15_10_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line14) == SET)
{
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14) == 0)
{
CountSensor_Count++;
}
EXTI_ClearITPendingBit(EXTI_Line14);
}
}
CountSenor.h部分:
#ifndef __COUNTSENSOR_H
#define __COUNTSENSOR_H
void CountSensor_Init(void);
uint16_t CountSensor_Get(void);
void EXTI15_10_IRQHandler(void);
#endif
main.c部分:
#include "stm32f10x.h" // Device header
#include "delay.h"
#include "OLED.h"
#include "CountSensor.h"
int main(void)
{
OLED_Init();
CountSensor_Init();
OLED_ShowString(1, 1, "Count:");
while(1)
{
OLED_ShowNum(2,1,CountSensor_Get(),5);
}
}