找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 822|回复: 3
收起左侧

请教一个STM32 C语言函数解析

[复制链接]
ID:592807 发表于 2019-9-10 17:46 | 显示全部楼层 |阅读模式
#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位数据输出位吗?怎么实现跑马灯的翻转。


回复

使用道具 举报

ID:174087 发表于 2019-9-11 09:45 | 显示全部楼层
异或对应的引脚就会使相应引脚的电平发生反转,这样就可以控制led灯亮灭
回复

使用道具 举报

ID:123289 发表于 2019-9-11 22:19 | 显示全部楼层
先弄清楚“跑马”的原理及实现的方案,对照硬件图再去研究你的程序。
回复

使用道具 举报

ID:466908 发表于 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就互换
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表