|
我在用寄存器編程的方式控制tcs230模塊的時(shí)候,在配置OUT腳浮空輸入的時(shí)候程序卡死了
下面是我寫的用來配置寄存器的函數(shù),前面幾個(gè)配置推挽輸出的都正常,但是到后面配置浮空輸入的時(shí)候卡住了
求大神為我指點(diǎn)一下迷津(用串口輸出的是調(diào)試信息,忽略掉就可以了)
還有就是我的tcs230模塊的OE引腳始終是低電平,用程序控制根本無效,之前用51和32的固件庫編程都是這樣,難道是硬件本身就是這樣的嗎?
- 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浮空輸入,程序進(jìn)行到這里會(huì)卡住
-
- USART1->DR=0x36;
- while((USART1->SR&0X40)==0);
- }
復(fù)制代碼
|
|