本帖最后由 Coobila 于 2013-5-27 23:10 编辑
看见stm8性价比很高,最近就开始学习和使用它。以为8位不难,不过这IO设置就给了我一个下马威。问题是这样的,我的核心小板的端口输出都没什么问题,但是设置为输入时,不管怎样设置都不起作用。使用内部晶振,16M不分频。代码如下:
void main(void)
{
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
/* PD2 input pullup */
GPIOD->CR1 |= (1 << 2);
GPIOD->CR2 &= ~(1 << 2);
GPIOD->DDR &= ~(1 << 2);
while(1 == (GPIOD->IDR & GPIO_PIN_2));
while(0 == (GPIOD->IDR & GPIO_PIN_2));
GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_IN_PU_NO_IT);
while(1 == GPIO_ReadInputPin(GPIOD, GPIO_PIN_2));
while(0 == GPIO_ReadInputPin(GPIOD, GPIO_PIN_2));
/* Infinite loop */
while (1)
{
}
}
我用st-link时,发现每次都可以跑到while(1)循环处。输入上拉不是默认为高吗?为何此处它既不是高,又不是低?求大虾指点一下啊,这都折腾好几天了 。。。附件是我的IAR工程代码。
stm8s_demo.zip
(798.32 KB)
|