OpenEdv-开源电子网

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

仿照原子哥的串口配置函数写了一段串口初始化函数,但不知道是哪里出了问题,串口进不了中断,实现不了想要的效果

[复制链接]

3

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2019-5-9
在线时间
15 小时
发表于 2019-12-4 23:17:48 | 显示全部楼层 |阅读模式
5金钱
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. //ALIENTEK 探索者STM32F407开发板 实验4
  6. //串口通信实验  
  7. //技术支持:www.openedv.com
  8. //广州市星翼电子科技有限公司

  9. u8 usart_buff[16];
  10. u16 usart_sta;

  11. int main(void)
  12. {
  13.         //u8 dat;
  14.         u8 t;
  15.         //u8 len;          
  16.         //u16 usart_sta;
  17.        
  18.         Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz
  19.         delay_init(168);                //延时初始化
  20.         usart_init(84,115200);       
  21.         LED_Init();                                 
  22.        
  23.         while(1)
  24.         {
  25.        
  26.         }               
  27.        
  28. }

  29. void USART1_IRQHandler(void)
  30. {
  31.         extern u8 usart_buff[16];
  32.         static u8 i=0;
  33.         u8 res;               
  34.        
  35.         if(USART1->SR&(1<<5))//接收到数据
  36.         {       
  37.     USART1->SR &=~(1<<5);
  38.                 res = USART1->DR;
  39.                 usart_buff[i] = res;
  40.                 USART1->DR = usart_buff[i];
  41.                 i++;
  42.     LED0 =!LED0;
  43.         }
  44.        
  45.         LED0 =!LED0;
  46.         if(res == 0x0d)
  47.         {
  48.                 usart_sta = 0x8000;
  49.         }
  50.        
  51. }

  52. void usart_init(u32 pclk2,u32 bound)
  53. {
  54.         float temp;
  55.         u16 mantissa;
  56.         u16 fraction;          
  57.         temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV@OVER8=0
  58.         mantissa=temp;                                 //得到整数部分
  59.         fraction=(temp-mantissa)*16; //得到小数部分@OVER8=0
  60.     mantissa<<=4;
  61.         mantissa+=fraction;

  62.         RCC->AHB1ENR |= 1<<0 ;
  63.         RCC->APB2ENR |= 1<<4 ;
  64.        
  65.        
  66.         GPIOA->MODER &= ~(3<<2*9);
  67.         GPIOA->MODER |= 2<<2*9;
  68.   GPIOA->MODER &= ~(3<<2*10);
  69.         GPIOA->MODER |= 3<< 2*10;
  70.        
  71.         GPIOA->OTYPER &= ~(1<<9);
  72.         GPIOA->OTYPER &= ~(1<<10);
  73.        
  74.         GPIOA->OSPEEDR &= ~(3<<9*2);
  75.         GPIOA->OSPEEDR |= 2<<9*2;
  76.         GPIOA->OSPEEDR &= ~(3<<10*2);
  77.         GPIOA->OSPEEDR |= 2<<10*2;
  78.        
  79.         GPIOA->PUPDR &=~(3<<9*2);
  80.         GPIOA->PUPDR &=~(3<<10*2);
  81.        
  82.         GPIOA->AFR[1] &= ~(15<<4);
  83.         GPIOA->AFR[1] |= 7<<4;
  84.         GPIOA->AFR[1] &= ~(15<<8);
  85.         GPIOA->AFR[1] |= 7<<8;
  86.        
  87.         USART1->BRR=mantissa;
  88.                
  89.         USART1->CR1 &= ~(1<<15);
  90.         //USART1->CR1 &= ~(1<<12);
  91.         //USART1->CR1 &= ~(1<<10);
  92.         //USART1->CR1 &= ~(1<<7);
  93.         //USART1->CR1 |=  1<<7;
  94.        
  95.         USART1->CR1 &= ~(1<<3);
  96.         USART1->CR1 |= 1<<3;
  97.         USART1->CR1 &= ~(1<<2);
  98.         USART1->CR1 |= 1<<2;
  99.         //USART1->CR2 &= ~(3<<13);
  100.        
  101.         USART1->CR1 &= ~(1<<5);
  102.   USART1->CR1|=1<<5;
  103.        
  104.         MY_NVIC_Init(3,3,USART1_IRQn,2);
  105.        
  106.         USART1->CR1 &= ~(1<<13);
  107.   USART1->CR1 |= 1<<13;
  108. }







复制代码


最佳答案

查看完整内容[请看2#楼]

已经找到问题了,gpio口模式哪里配置错了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2019-5-9
在线时间
15 小时
 楼主| 发表于 2019-12-4 23:17:49 | 显示全部楼层
已经找到问题了,gpio口模式哪里配置错了
回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-12-5 10:36:08 | 显示全部楼层
帮顶                                             
成功没有捷径
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2019-12-5 14:12:28 | 显示全部楼层
这个你检查下配置,对比源程序看看
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-23 13:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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