永发信息网

stm32进入不了串口中断(寄存器操作)

答案:1  悬赏:0  手机版
解决时间 2021-02-28 18:24
我就是按李想的视频来写的,不知道对不对,串口发数据过去,调试助手一直没反应,程序如下。

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);

}

是电脑发数据,串口没反应,编译的时候没语法错误。
最佳答案
检查一下串口调试助手的串口参数是不是和程序的一致,如停止位,校验位,波特率等。再看看串口中断服务函数有没有清除中断标志,如果没清除则出不了中断函数。串口调试助手一般第一次上数的时候都会被冲掉(不知为什么),如果你的串口中断服务函数有没有清除中断标志而出不去中断服务函数,那么肯定就接收不到电脑发向串口的数据了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
老婆睡着了 我用屁股悄悄坐上她肚子 她会醒吗
我想知道丁香茶跟西蓝花是不是真的可以抑制幽
()苏双、张世平两人是从事什么职业的?
电脑显示器有哪些牌子?
我是个居士收养2个小猫请各位起名字1个白猫1
半沟我想知道这个在什么地方
烧的磨芋鸭肉放了两天还可以吃吗
没有书的家就像没有星星的夜空仿句
海沧区厦门贵族韩蒸美疗会所(天成大厦店)我想
【123456】123456怎么算等于1
TCL直营店金家坝店这个地址在什么地方,我要
QQ飞车飞碟倒着跑怎么那么快
连接怎么发朋友圈
木匠滩我想知道这个在什么地方
冬天,我州的许多菜农利用温室栽培蔬菜在温室
推荐资讯
下列对生态系统能量流动特征的描述中,除哪项
电子商务网站设计中的主要业务流程设定包括哪
我是统招大专不过上了一年没上了学籍注销了?
鑫日印刷物资地址有知道的么?有点事想过去
姜家烤鸡休闲庄地址在哪,我要去那里办事
桐乡虹鹰童车批发中心在哪里啊,我有事要去这
上班天天打电话,嗓子很难受,有什么对嗓子好
什么是圆滑,要怎么变的圆滑一点
“按图索骥”讲的是,古时候的相马名家伯乐在
我想买松下SDR-H40摄像机不知怎么样,性价比
中国电信人民路电信天翼手机卖场怎么去啊,有
求索尼黑卡相机拍摄逆光的技巧,谢谢
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?