问题已经解决谢谢版主 今天搞了一天才搞好 分享下把 免得以后也会有人不知道
打开"stm8s.h" 查找 GPIO_struct
原来定义:
typedef struct GPIO_struct
{
vu8 ODR; /*!< Output Data Register */
vu8 IDR; /*!< Input Data Register */
vu8 DDR; /*!< Data Direction Register */
vu8 CR1; /*!< Configuration Register 1 */
vu8 CR2; /*!< Configuration Register 2 */
}
GPIO_TypeDef;
改进后:
typedef struct GPIO_struct
{
union OUTDATAREG
{
vu8 all;
struct outdatareg
{
vu8 B0:1;
vu8 B1:1;
vu8 B2:1;
vu8 B3:1;
vu8 B4:1;
vu8 B5:1;
vu8 B6:1;
vu8 B7:1;
}Bit;
}ODR,IDR;
vu8 DDR; /*!< Data Direction Register */
vu8 CR1; /*!< Configuration Register 1 */
vu8 CR2; /*!< Configuration Register 2 */
}
GPIO_TypeDef;
GPIOB->ODR.all=0;//整个端口操作
//输出位操作,前提是该端口已经定义为输出
GPIOB->ODR.Bit.B7=1;//PB7置高
GPIOB->ODR.Bit.B7=0;//PB7置低
GPIOB->ODR.Bit.B6=1;//PB6置高
GPIOB->ODR.Bit.B6=0;//PB6置低
//输入位操作,前提是该端口已经定义为输入
if(GPIOB->IDR.Bit.B1 == 1)
{//端口输入高电平,运行下代码
}
if(GPIOB->IDR.Bit.B0 == 0)
{//端口输入低电平,运行下代码
}
|