STM32F1 외부 브레이크 인스턴스
7946 단어 stm32인스턴스함수.f1STM32F1 단편기
1、시계 켜기
void RCC_Config(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE)|
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
}
상응하는 시계를 설정하는 데 필요한 RCC 함수는 stm32f10xrcc.c 에서 이 파일을 프로젝트에 추가합니다.
2. 적절한 중단 설정
void NVIC_Config()
{
/* */
NVIC_InitTypeDefNVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
/*EXTI2*//* NVIC_InitTypeDef */
NVIC_InitStructure.NVIC_IRQChannel= EXTI2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority= 0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
/*EXTI3*/
NVIC_InitStructure.NVIC_IRQChannel=EXTI3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority= 1;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
/*EXTI5*/
NVIC_InitStructure.NVIC_IRQChannel= EXTI9_5_IRQN;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority= 2;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
3. 입출력 포트 초기화
void GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/*PE2--OUT_PP*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOE,&GPIO_InitStructure);
GPIO_ResetBits(GPIOE,GPIO_Pin_2);
/*PC2.PE3.PE5--IN_FLOATING*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);
/*PD3.PD6--OUT_PP*/
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_3 |GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOD,&GPIO_InitStructure);
/*PB5--OUT_PP*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
4. 해당 입출력 포트를 인터럽트 회선으로 설정
void EXTI_cfg()
{
EXTI_InitType DefEXTI_InitStructure;
/* */
EXTI_ClearITPendingBit(EXTI_Line2);
EXTI_ClearITPendingBit(EXTI_Line3);
EXTI_ClearITPendingBit(EXTI_Line5);
/* */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource2);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource3);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);
EXTI_InitStructure.EXTI_Line= EXTI_Line2 | EXTI_Line3 | EXTI_Line5;
EXTI_InitStructure.EXTI_Mode= EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger= EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStructure);
}
5. 서비스 프로그램 중단
voidEXTI2_IRQHandler(void)
{
GPIO_SetBits(GPIOD,GPIO_Pin_6);// LED
EXTI_ClearITPendingBit(EXTI_Line2); //
}
voidEXTI3_IRQHandler(void)
{
GPIO_SetBits(GPIOD,GPIO_Pin_3);
EXTI_ClearITPendingBit(EXTI_Line3);
}
voidEXTI9_5_IRQHandler(void)
{
GPIO_SetBits(GPIOB,GPIO_Pin_5);
EXTI_ClearITPendingBit(EXTI_Line5);
}
인터럽트 서비스 프로그램은 stm32f10xit.c 중.이 부분의 내용은 전편에 대한 보충이다.부족한 점은 환영합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
error: #136: struct ""has no field "AHBSTR"RL-TCPNet을 이식할 때 공식 이더넷 DP83848칩의 구동을 추가하여 컴파일할 때 계속 오류를 보고하였다 error: #136: struct ""has no field "AHBSTR" 사용한 것은 처음에 #...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.