项目中使用到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);}}
|