标题: 请教一个STM32 C语言函数解析 [打印本页]

作者: 黄youhui    时间: 2019-9-10 17:46
标题: 请教一个STM32 C语言函数解析
#define GPIO_PORT_LED1 GPIOI
#define GPIO_PIN_LED1 GPIO_Pin_10
#define GPIO_PORT_LED2 GPIOF
#define GPIO_PIN_LED2 GPIO_Pin_7
#define GPIO_PORT_LED3 GPIOF
#define GPIO_PIN_LED3 GPIO_Pin_8
#define GPIO_PORT_LED4 GPIOC
#define GPIO_PIN_LED4 GPIO_Pin_2

void bsp_LedToggle(uint8_t _no)
{
        if (_no == 1)
        {
                GPIO_PORT_LED1->ODR ^= GPIO_PIN_LED1;
        }
        else if (_no == 2)
        {
                GPIO_PORT_LED2->ODR ^= GPIO_PIN_LED2;
        }
        else if (_no == 3)
        {
                GPIO_PORT_LED3->ODR ^= GPIO_PIN_LED3;
        }
        else if (_no == 4)
        {
                GPIO_PORT_LED4->ODR ^= GPIO_PIN_LED4;
        }
}

请问一下ORD不是16位数据输出位吗?怎么实现跑马灯的翻转。



作者: woshige    时间: 2019-9-11 09:45
异或对应的引脚就会使相应引脚的电平发生反转,这样就可以控制led灯亮灭
作者: yzwzfyz    时间: 2019-9-11 22:19
先弄清楚“跑马”的原理及实现的方案,对照硬件图再去研究你的程序。
作者: 菜鸡一只314159    时间: 2019-9-11 23:57
#define GPIO_Pin_0                 ((uint16_t)0x0001)  /*!< Pin 0 selected */
#define GPIO_Pin_1                 ((uint16_t)0x0002)  /*!< Pin 1 selected */
#define GPIO_Pin_2                 ((uint16_t)0x0004)  /*!< Pin 2 selected */
#define GPIO_Pin_3                 ((uint16_t)0x0008)  /*!< Pin 3 selected */
#define GPIO_Pin_4                 ((uint16_t)0x0010)  /*!< Pin 4 selected */
#define GPIO_Pin_5                 ((uint16_t)0x0020)  /*!< Pin 5 selected */
#define GPIO_Pin_6                 ((uint16_t)0x0040)  /*!< Pin 6 selected */
#define GPIO_Pin_7                 ((uint16_t)0x0080)  /*!< Pin 7 selected */
#define GPIO_Pin_8                 ((uint16_t)0x0100)  /*!< Pin 8 selected */
#define GPIO_Pin_9                 ((uint16_t)0x0200)  /*!< Pin 9 selected */
#define GPIO_Pin_10                ((uint16_t)0x0400)  /*!< Pin 10 selected */
#define GPIO_Pin_11                ((uint16_t)0x0800)  /*!< Pin 11 selected */
#define GPIO_Pin_12                ((uint16_t)0x1000)  /*!< Pin 12 selected */
#define GPIO_Pin_13                ((uint16_t)0x2000)  /*!< Pin 13 selected */
#define GPIO_Pin_14                ((uint16_t)0x4000)  /*!< Pin 14 selected */
#define GPIO_Pin_15                ((uint16_t)0x8000)  /*!< Pin 15 selected */
#define GPIO_Pin_All               ((uint16_t)0xFFFF)  /*!< All pins selected */
对应位是1,其余是0.异或之后01就互换




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1