头文件
#ifndef _INIT_H
#define _INIT_H
#include"sys.h"
extern u8 Receive_Buf[32];
extern u8 Rec_Sta;
#define LED0 PAout(8)
#define LED1 PDout(2)
void Usart_Init(void);
#endif
C文件
#include"init.h"
u8 Receive_Buf[32];
u8 Rec_Sta;
void Usart_Init(void)
{
RCC->APB2ENR|=1<<2;
RCC->APB2ENR|=1<<5;
RCC->APB2ENR|=1<<14;
GPIOD->CRL&=0XFFFFF0FF;
GPIOD->CRL|=0X00000300;
GPIOA->CRH&=0XFFFFF000;
GPIOA->CRH|=0X000004B3;
GPIOA->ODR|=1<<8;
GPIOD->ODR|=1<<2;
RCC->APB2RSTR|=1<<14;
RCC->APB2RSTR&=~(1<<14);
USART1->BRR=0X1D4C;
USART1->CR1|=0X200C;
USART1->CR1|=1<<8;
USART1->CR1|=1<<5;
MY_NVIC_Init(3,3,USART1_IRQChannel,2);
}
void USART_IRQHandler(void)
{
u8 res;
if(USART1->SR&(1<<5))
{
res=USART1->DR;
LED1=!LED1;
}
}
主函数
#include<stm32f10x_lib.h>
#include"init.h"
#include"sys.h"
#include"delay.h"
int main(void)
{
Stm32_Clock_Init(9);
delay_init(72);
Usart_Init();
while(1)
{
LED0=!LED0;
delay_ms(300);
}
}
我用的正点原子开发板,上面是我做的串口中断接收程序,串口的初始化是自己写的,没有用开发板带的,目的是任意发一个字节,在串口中断中LED1状态翻转,可是为什么没有现象?没有进入中断吗?
|