我就是按李想的视频来写的,不知道对不对,串口发数据过去,调试助手一直没反应,程序如下。
void Uart1_PutChar(u8 ch)
{
USART1->DR=ch;
while((USART1->SR&0x40)==0);
}
void USART1_IRQHandler(void)
{
if(USART1->SR&(1<<5))
{
com=USART1->DR;
if(com==0x63)
{
com=0;
Uart1_PutChar(0x77);
Uart1_PutChar(0x97);
}
}
}
void uart_init(u32 pclk2,u32 bound)
{
float temp;
u16 mantissa;
u16 fraction;
temp=(float)(pclk2*1000000)/(bound*16);
mantissa=temp;
fraction=(temp-mantissa)*16;
mantissa<<=4;
mantissa+=fraction;
RCC->APB2ENR|=1<<2;
RCC->APB2ENR|=1<<14;
GPIOA->CRH&=0xFFFFF00F;
GPIOA->CRH|=0x000008B0;
RCC->APB2RSTR|=1<<14;
RCC->APB2RSTR&=~(1<<14);
USART1->BRR=mantissa;
USART1->CR1|=0x200C;
USART1->CR1|=1<<8;
USART1->CR1|=1<<5;
MY_NVIC_Init(3,3,USART1_IRQChannel,2);
}
是电脑发数据,串口没反应,编译的时候没语法错误。
stm32进入不了串口中断(寄存器操作)
答案:1 悬赏:0 手机版
解决时间 2021-02-28 18:24
- 提问者网友:难遇难求
- 2021-02-27 21:05
最佳答案
- 五星知识达人网友:轻雾山林
- 2021-02-27 21:25
检查一下串口调试助手的串口参数是不是和程序的一致,如停止位,校验位,波特率等。再看看串口中断服务函数有没有清除中断标志,如果没清除则出不了中断函数。串口调试助手一般第一次上数的时候都会被冲掉(不知为什么),如果你的串口中断服务函数有没有清除中断标志而出不去中断服务函数,那么肯定就接收不到电脑发向串口的数据了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯