打印
[产品应用]

cw32f030c8点灯

[复制链接]
416|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
alvpeg|  楼主 | 2024-5-22 12:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "CW32F0xx.h"

void delay(uint32_t count) { for(uint32_t i = 0; i < count; i++) { __NOP(); } }

int main(void) { // 启用GPIOA的时钟 SYSCTRL->AHBCLKENR |= (1 << 17);

// 配置GPIOA Pin 1为推挽输出 GPIOA->MODER &= ~(3 << (2 * 1)); GPIOA->MODER |= (1 << (2 * 1));

while(1) { // 点亮LED GPIOA->ODR |= (1 << 1);

delay(1000000); // 延时

// 熄灭LED
GPIOA->ODR &= ~(1 << 1);

delay(1000000); // 延时
1.
2.
3.
4.
5.
6.
} }

该程序使用CW32F030C8的内置GPIO控制LED灯的闪烁。它通过在延时循环中交替点亮和熄灭GPIOA Pin 1来实现LED的闪烁效果。您可以根据自己的需求进行修改和扩展。 请注意,这只是一个简单的示例程序,并没有包含完整的初始化和配置代码。在实际开发中,您需要根据具体要求对时钟、GPIO和其他外设进行适当的初始化和配置。

ODR

ODR是GPIO(通用输入输出)寄存器中的一个位,用于设置或读取特定引脚的输出状态。

在示例程序中,我们使用以下代码将GPIOA的ODR寄存器的特定位(1)设置为高电平(点亮LED):

c复制代码GPIOA->ODR |= (1 << 1);


这行代码使用按位或运算符(|)设置GPIOA的ODR寄存器的第1位。在这种情况下,我们要求第1位(对应GPIOA Pin 1)设置为1,以点亮LED。

类似地,我们使用以下代码将GPIOA的ODR寄存器的特定位(1)设置为低电平(熄灭LED):

c复制代码GPIOA->ODR &= ~(1 << 1);


这行代码使用按位与运算符(&)对GPIOA的ODR寄存器的第1位进行操作。通过对第1位(对应GPIOA Pin 1)进行取反操作并与寄存器的其他位进行与运算,我们使第1位为0,从而熄灭LED。

通过对ODR寄存器进行适当的位操作,您可以设置或读取特定引脚的输出状态,以实现所需的功能。


使用特权

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

本版积分规则

31

主题

1469

帖子

0

粉丝