你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F030K6T6无法进入中断,在线等大神

[复制链接]
shabiyufeiwang 提问时间:2020-7-13 21:55 /

void Usart_Init(void)
{
        //GPIO¶Ë¿ÚÉèÖÃ
    GPIO_InitTypeDef   GPIO_InitStructure;
  USART_InitTypeDef  USART_InitStructure;
  NVIC_InitTypeDef   NVIC_InitStructure;
   //DMA_InitTypeDef DMA_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_AHBPeriph_GPIOA, ENABLE); //ʹÄÜUSART1£¬GPIOAʱÖÓ

   USART_DeInit(USART1);

  GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1);
  GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1);
  
  //USART1_TX   PA.9
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10; //PA.9
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //¸´ÓÃÍÆÍìÊä³ö
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_Init(GPIOA, &GPIO_InitStructure); //³õʼ»¯PA9

   //USART ³õʼ»¯ÉèÖÃ
  USART_InitStructure.USART_BaudRate = 9600;//Ò»°ãÉèÖÃΪ9600;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;//×Ö³¤Îª8λÊý¾Ý¸ñʽ
  USART_InitStructure.USART_StopBits = USART_StopBits_1;//Ò»¸öֹͣλ
  USART_InitStructure.USART_Parity = USART_Parity_No;//ÎÞÆæÅ¼Ð£Ñéλ
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//ÎÞÓ²¼þÊý¾ÝÁ÷¿ØÖÆ
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //ÊÕ·¢Ä£Ê½
   USART_Init(USART1, &USART_InitStructure); //³õʼ»¯´®¿Ú
   USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//¿ªÆôÖжÏ
   USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);//
    //USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE);   //DMA enable
   USART_Cmd(USART1, ENABLE);                   //
   //Usart1 NVIC ÅäÖÃ
    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPriority = 1;  //×ÓÓÅÏȼ¶3
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   //IRQͨµÀʹÄÜ
  NVIC_Init(&NVIC_InitStructure); //¸ù¾ÝÖ¸¶¨µÄ²ÎÊý³õʼ»¯VIC¼Ä´æÆ÷
  
}




void USART1_IRQHandler(void)                 //´®¿Ú1ÖжϷþÎñ³ÌÐò
{
uint8_t Res;
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //½ÓÊÕÖжÏ(½ÓÊÕµ½µÄÊý¾Ý±ØÐëÊÇ0x0d 0x0a½áβ)
  {
   Res =USART_ReceiveData(USART1);//(USART1->DR); //¶ÁÈ¡½ÓÊÕµ½µÄÊý¾Ý
   USART1_RX_BUF[len_usart1]=Res;
   len_usart1++;  
   //LedShinning();  
//GPIO_ResetBits(GPIOA,GPIO_Pin_8);   
   
//Receive_Done = 1;   
  }  
if(USART_GetITStatus(USART1, USART_IT_IDLE) != RESET)  //½ÓÊÕÖжÏ(½ÓÊÕµ½µÄÊý¾Ý±ØÐëÊÇ0x0d 0x0a½áβ)
  {
   USART_ClearITPendingBit(USART1,USART_IT_IDLE);
   Receive_Done = 1;  
   //LedShinning();  
//GPIO_ResetBits(GPIOA,GPIO_Pin_8);   
  }  

收藏 评论9 发布时间:2020-7-13 21:55

举报

9个回答
mylovemcu 回答时间:2020-7-14 19:42:04
没有打开引脚复用功能的时钟  
使用串口的时候引脚属于复用功能  需要打开复用功能时钟  就是AFIO的时钟
并且注意一下A口线的时钟  是AHB的时钟线  怎么用APB2的函数配置  我没看这个编程手册  不知道A口线是哪个时钟总线的  留意一下
shabiyufeiwang 回答时间:2020-7-14 21:37:32
mylovemcu 发表于 2020-7-14 19:42
没有打开引脚复用功能的时钟  
使用串口的时候引脚属于复用功能  需要打开复用功能时钟  就是AFIO的时钟
并 ...

现在STM32忘上位机发送没有问题
斯文人 回答时间:2020-7-15 09:15:54
不是我泼凉水 看到你发个帖子都这么的随意 不用心, 我也没有看的欲望了 , 至少排版的整齐点,把乱码要不删除要不就该人人类能看懂的符号这样不好吗?
cugxiao 回答时间:2020-7-15 09:57:05
你TX和RX都初始化为输出模式?还都上拉?试试把RX初始化为浮空输入
hjl2832 回答时间:2020-7-15 15:14:08
干嘛不用HAL呢,用CUBEMX配置,省得自己搞还出错。
ts2000 回答时间:2020-7-15 17:24:33
初始化顺序调换一下。。。先把引脚初始化 ,再设置复用功能。。。
lebment 回答时间:2020-7-15 19:34:17
HAL库调试,LL库最后优化代码速度。
aiherong 回答时间:2020-7-16 03:49:34
孩子们都用库函数,看着爱莫能助!
乱码是因为没选用简体中文(在edit ->config 设置)
用PA9、PA10使用串口1不必复用,将PA9设为推挽输出,PA10设为上拉输入,分二次进行初始化,不可以放在一起一步完成,另外,将涉及复用的部分全注释掉,试试看,应该没问题!
shabiyufeiwang 回答时间:2020-7-19 23:35:47
斯文人 发表于 2020-7-15 09:15
不是我泼凉水 看到你发个帖子都这么的随意 不用心, 我也没有看的欲望了 , 至少排版的整齐点,把乱码要不 ...

void Usart_Init(void)
{
         
     GPIO_InitTypeDef   GPIO_InitStructure;
     USART_InitTypeDef  USART_InitStructure;
     NVIC_InitTypeDef   NVIC_InitStructure;


     RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_AHBPeriph_GPIOA, ENABLE);

     USART_DeInit(USART1);

     GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1);
     GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1);
   
   //USART1_TX   PA.9
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10; //PA.9
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //¸´ÓÃÍÆÍìÊä³ö
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
     GPIO_Init(GPIOA, &GPIO_InitStructure);

     USART_InitStructure.USART_BaudRate = 9600;
     USART_InitStructure.USART_WordLength = USART_WordLength_8b;
     USART_InitStructure.USART_StopBits = USART_StopBits_1;
     USART_InitStructure.USART_Parity = USART_Parity_No;
     USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
     USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
     USART_Init(USART1, &USART_InitStructure);
     USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
     USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);
     USART_Cmd(USART1, ENABLE);                  
   
     NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
     NVIC_InitStructure.NVIC_IRQChannelPriority = 1;  
     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   
     NVIC_Init(&NVIC_InitStructure);
   
}




void USART1_IRQHandler(void)                 
{
    uint8_t Res;
   
   if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  
   {
        Res =USART_ReceiveData(USART1);//(USART1->DR);
        USART1_RX_BUF[len_usart1]=Res;
        len_usart1++;
   }  
   if(USART_GetITStatus(USART1, USART_IT_IDLE) != RESET)  
   {
        USART_ClearITPendingBit(USART1,USART_IT_IDLE);
   }  


所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版