打印
[STM32F0]

STM32F030 GPIO无法配置成高阻态

[复制链接]
2380|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
项目中使用到8脚数码管,需要使用高阻态来消影。程序之前在STM32f1跟STM8L051上跑都没问题,在F030上就出现串码现象了单步发现是部分IO无法高阻导致
寄存器配置跟库函数配置我都用了




void GPIO_MODE(uint32_t gpio_pin,u8 odr)
        {                
                GPIO_InitTypeDef GPIO_InitStructure;
               
               GPIO_InitStructure.GPIO_Pin = gpio_pin;
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
                GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//无上下拉
                GPIO_Init(GPIOA, &GPIO_InitStructure);
                if(odr)
                        GPIO_SetBits(GPIOA,gpio_pin);   // = 1
                else
                        GPIO_ResetBits(GPIOA,gpio_pin); // = 0
                /*
               
                //设置输出模式
                GPIOA->MODER &= ~(3 << (pin * 2));
                GPIOA->MODER |=  (1 << (pin * 2));
                //设置推挽输出
                GPIOA->OTYPER &= ~(1 << pin);
                //设置输出速度2MHz
                GPIOA->OSPEEDR &= ~(3 << (pin * 2));
                //GPIO端口上拉/下拉寄存器
                GPIOA->PUPDR &= ~(3 << (pin * 2));
                */
        }

        void GPIO_Floating(uint32_t gpio_pin)
        {/*
                //设置浮空输入模式
                GPIOA->MODER &= ~(3 << (pin * 2));
                //GPIO端口上拉/下拉寄存器
                GPIOA->PUPDR &= ~(3 << (pin * 2));
                */
                GPIO_InitTypeDef GPIO_InitStructure;
               
          GPIO_InitStructure.GPIO_Pin = gpio_pin;
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
                GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//无上下拉
                GPIO_Init(GPIOA, &GPIO_InitStructure);
        }
void LED1_PIN(char num) {if(num == 1){GPIO_MODE(GPIO_Pin_0,1); }  else if(num == 0){GPIO_MODE(GPIO_Pin_0,0); }  else {GPIO_Floating(GPIO_Pin_0);}}
void LED2_PIN(char num) {if(num == 1){GPIO_MODE(GPIO_Pin_1,1); }  else if(num == 0){GPIO_MODE(GPIO_Pin_1,0); }  else {GPIO_Floating(GPIO_Pin_1);}}
void LED3_PIN(char num) {if(num == 1){GPIO_MODE(GPIO_Pin_2,1); }  else if(num == 0){GPIO_MODE(GPIO_Pin_2,0); }  else {GPIO_Floating(GPIO_Pin_2);}}
void LED4_PIN(char num) {if(num == 1){GPIO_MODE(GPIO_Pin_3,1); }  else if(num == 0){GPIO_MODE(GPIO_Pin_3,0); }  else {GPIO_Floating(GPIO_Pin_3);}}
void LED5_PIN(char num) {if(num == 1){GPIO_MODE(GPIO_Pin_4,1); }  else if(num == 0){GPIO_MODE(GPIO_Pin_4,0); }  else {GPIO_Floating(GPIO_Pin_4);}}
void LED6_PIN(char num) {if(num == 1){GPIO_MODE(GPIO_Pin_5,1); }  else if(num == 0){GPIO_MODE(GPIO_Pin_5,0); }  else {GPIO_Floating(GPIO_Pin_5);}}
void LED7_PIN(char num) {if(num == 1){GPIO_MODE(GPIO_Pin_6,1); }  else if(num == 0){GPIO_MODE(GPIO_Pin_6,0); }  else {GPIO_Floating(GPIO_Pin_6);}}
void LED8_PIN(char num) {if(num == 1){GPIO_MODE(GPIO_Pin_7,1); }  else if(num == 0){GPIO_MODE(GPIO_Pin_7,0); }  else {GPIO_Floating(GPIO_Pin_7);}}


使用特权

评论回复
沙发
drer| | 2019-5-22 14:43 | 只看该作者
有没有可能这个引脚坏了呢 换一个试试看

使用特权

评论回复
板凳
晓伍| | 2019-6-13 12:13 | 只看该作者
为什么无法配置呢 每个都应该可以啊 是不是外部电路给拉下来了

使用特权

评论回复
地板
观海| | 2019-6-13 12:44 | 只看该作者
硬件电路的问题吧

使用特权

评论回复
5
guanjiaer| | 2019-6-13 12:49 | 只看该作者
你的问题好奇怪啊

使用特权

评论回复
6
heimaojingzhang| | 2019-6-13 12:54 | 只看该作者
换一个引脚试试看

使用特权

评论回复
7
keaibukelian| | 2019-6-13 13:11 | 只看该作者
二者之间的寄存器是一样的吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝