標(biāo)題:
stm32用寄存器編程方法配置GPIO引腳為浮空輸入的時(shí)候程序會(huì)卡在那條語句上
[打印本頁]
作者:
wmxs
時(shí)間:
2017-8-17 19:17
標(biāo)題:
stm32用寄存器編程方法配置GPIO引腳為浮空輸入的時(shí)候程序會(huì)卡在那條語句上
如題,我在用tcs230模塊時(shí),用寄存器編程的時(shí)候,在配置GPIO引腳的時(shí)候發(fā)現(xiàn)程序會(huì)卡死在配置浮空輸入的那條語句上下面是我用來配置GPIO引腳的函數(shù),前面的推挽輸出都是正常的,但是到了配置浮空輸入的時(shí)候就卡住了(PB15腳)
求大神幫我看看到底是怎么回事(使用串口輸出的用來調(diào)試用的,忽略掉就可以了)
還有就是我的tcs230模塊的OE引腳好像始終是低電平,根本不受程序的控制,我在用51和用固件庫編程的時(shí)候都是這樣,是硬件本身就是這樣的嗎?
static void TCS230_GPIO_Init(void) {
RCC->APB2ENR|=1<<3; //使能PORTA接口時(shí)鐘
USART1->DR=0x30;
while((USART1->SR&0X40)==0);
GPIOB->CRH&=0XFFFFF0FF;
GPIOB->CRH|=0X00000300; //PB10推挽輸出
GPIOB->ODR|=1<<2; //PB10輸出高電平
USART1->DR=0x31;
while((USART1->SR&0X40)==0);
GPIOB->CRH&=0XFFFF0FFF;
GPIOB->CRH|=0X00003000; //PB11推挽輸出
GPIOB->ODR|=1<<3; //PB11輸出高電平
USART1->DR=0x32;
while((USART1->SR&0X40)==0);
GPIOB->CRH&=0XFFF0FFFF;
GPIOB->CRH|=0X00030000; //PB12推挽輸出
GPIOB->ODR|=1<<4; //PB12輸出高電平
USART1->DR=0x33;
while((USART1->SR&0X40)==0);
GPIOB->CRH&=0XFF0FFFFF;
GPIOB->CRH|=0X00300000; //PB13推挽輸出
GPIOB->ODR|=1<<5; //PB13輸出高電平
USART1->DR=0x34;
while((USART1->SR&0X40)==0);
GPIOB->CRH&=0XF0FFFFFF;
GPIOB->CRH|=0X03000000; //PB14推挽輸出
GPIOB->ODR|=1<<6; //PB14輸出高電平
USART1->DR=0x35;
while((USART1->SR&0X40)==0);
GPIOB->CRH&=0X0FFFFFFF;
USART1->DR=0x40;
while((USART1->SR&0X40)==0);
GPIOB->CRH|=0X40000000; //PB15浮空輸入,是外部中斷的輸入線,但是程序到了這一步后會(huì)卡死,不知道是什么原因
USART1->DR=0x36;
while((USART1->SR&0X40)==0);
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1