找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5187|回复: 0
打印 上一主题 下一主题
收起左侧

stm32用寄存器编程方法配置GPIO引脚为浮空输入的时候程序会卡在那条语句上

[复制链接]
跳转到指定楼层
楼主
ID:228154 发表于 2017-8-17 19:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,我在用tcs230模块时,用寄存器编程的时候,在配置GPIO引脚的时候发现程序会卡死在配置浮空输入的那条语句上下面是我用来配置GPIO引脚的函数,前面的推挽输出都是正常的,但是到了配置浮空输入的时候就卡住了(PB15脚)
求大神帮我看看到底是怎么回事(使用串口输出的用来调试用的,忽略掉就可以了)
还有就是我的tcs230模块的OE引脚好像始终是低电平,根本不受程序的控制,我在用51和用固件库编程的时候都是这样,是硬件本身就是这样的吗?

  1. static void TCS230_GPIO_Init(void) {
  2.         RCC->APB2ENR|=1<<3;             //使能PORTA接口时钟
  3.   
  4.                 USART1->DR=0x30;
  5.           while((USART1->SR&0X40)==0);       
  6.         GPIOB->CRH&=0XFFFFF0FF;
  7.         GPIOB->CRH|=0X00000300;         //PB10推挽输出
  8.         GPIOB->ODR|=1<<2;               //PB10输出高电平
  9.        
  10.                 USART1->DR=0x31;
  11.           while((USART1->SR&0X40)==0);       
  12.         GPIOB->CRH&=0XFFFF0FFF;
  13.         GPIOB->CRH|=0X00003000;         //PB11推挽输出
  14.         GPIOB->ODR|=1<<3;               //PB11输出高电平
  15.        
  16.                 USART1->DR=0x32;
  17.           while((USART1->SR&0X40)==0);       
  18.         GPIOB->CRH&=0XFFF0FFFF;
  19.         GPIOB->CRH|=0X00030000;         //PB12推挽输出
  20.         GPIOB->ODR|=1<<4;               //PB12输出高电平

  21.                 USART1->DR=0x33;
  22.           while((USART1->SR&0X40)==0);
  23.         GPIOB->CRH&=0XFF0FFFFF;
  24.         GPIOB->CRH|=0X00300000;         //PB13推挽输出
  25.         GPIOB->ODR|=1<<5;               //PB13输出高电平

  26.                 USART1->DR=0x34;
  27.           while((USART1->SR&0X40)==0);       
  28.         GPIOB->CRH&=0XF0FFFFFF;
  29.         GPIOB->CRH|=0X03000000;         //PB14推挽输出
  30.         GPIOB->ODR|=1<<6;               //PB14输出高电平       

  31.                 USART1->DR=0x35;
  32.           while((USART1->SR&0X40)==0);
  33.         GPIOB->CRH&=0X0FFFFFFF;
  34.                 USART1->DR=0x40;
  35.           while((USART1->SR&0X40)==0);
  36.         GPIOB->CRH|=0X40000000;                     //PB15浮空输入,是外部中断的输入线,但是程序到了这一步后会卡死,不知道是什么原因
  37.                
  38.                 USART1->DR=0x36;
  39.           while((USART1->SR&0X40)==0);
  40. }
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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