OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2379|回复: 0

usart中断寄存器配置没反应

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2020-6-29
在线时间
1 小时
发表于 2020-7-27 15:36:08 | 显示全部楼层 |阅读模式
直接操作寄存器配置usart1中断方式接收数据,然后回传到串口(循环查询接收可以,只是中断方式不行)。但是串口发来数据后没有反应。忘大佬看一下。以下是中断配置代码:
void USART1_Init(unsigned int bound)
{
   unsigned int temp;
  unsigned int mantissa , fraction;
   //ʹÄÜʱÖÓ
   RCC->APB2ENR|=1ul<<2;
  RCC->APB2ENR|=1ul<<14;
  GPIOA->CRH&=0XFFFFF00F;;
  GPIOA->CRH|=0X000008B0;;

  
  //&cedil;&acute;&Icirc;&raquo;
  //USART->SR&=~(1ul<<6);
  //USART->SR&=~(1ul<<7);
  
  
  //&Eacute;è&Ouml;&Atilde;&sup2;¨&Igrave;&Oslash;&Acirc;&Ecirc;
  
  temp=(float)(72*1000000)/(bound*16);        
  mantissa=temp;                                                         
  fraction=(temp-mantissa)*16;                 
  mantissa<<=4;
  mantissa += fraction;
  USART->BRR=mantissa;
  //USART->BRR=0x271;
  USART->CR1|=1UL<<5;//&Ouml;&ETH;&para;&Iuml;&Ecirc;&sup1;&Auml;&Uuml;
  USART->CR1|=0x202c;
  UART_NVIC_init();
}
void send(int data)
{
  
  while((USART->SR&(1ul<<6))==0);
   USART->DR=(unsigned char)data;
  //while((USART->SR&(1ul<<6))==0);

}
void USART1_IRQHander(void)
{
   unsigned char res;
   while((USART->SR&(1ul<<5))==0);
  res=USART->DR;
  send(res);
}

下面是nvic配置
头文件:
#define AIRCR *(unsigned int *) 0xE000ED0C
#define UART1_IP *(unsigned int *) 0xE000E425
#define UART1_SIER *(unsigned int *) 0xE000E104
void UART_NVIC_init(void);
c文件:
#include"UARTt_NVIC.h"
void UART_NVIC_init()
{
   AIRCR=0x05FA0000|(5ul<<8);
  UART1_IP=0xf0;
  UART1_SIER|=(1ul<<5);
}

然后是main函数
USART1_Init(500000);
while(1);



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-30 03:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表