GD32 LED闪烁

本文介绍了如何使用GD32F303RCT6微控制器驱动LED进行闪烁。通过理解LED的工作原理,即低电平导通,高电平截止,将PB0和PB1口分别连接到LED1和LED2。在驱动代码中,主要在main.c文件的无限循环中切换IO口状态,实现LED的亮灭效果。
摘要由CSDN通过智能技术生成

*一、原理图
GD32F303RCT6原理图、LED原理图
工作原理:当LED灯左右产生电压差时,LED亮。即:给LED灯一个低电平,LED亮,高电平时灭。GD32F303的IO口驱动LED灯,这样,可以IO口低电平,使得LED亮。
(连接口:PB0->LED1、PB1->LED2)
在这里插入图片描述
在这里插入图片描述

*二、驱动代码
因为代码比较少,我是直接放main.c写的.
注意:只有main.c函数才包含
while(1) //循环
{

}

其他函数只有
while(xxxxxxx);

main.c

#include "main.h"
//定义LED亮、灭
#define LED_ON()         GPIO_BOP(GPIOB) = GPIO_PIN_0 | GPIO_PIN_1      
#define LED_OFF()        GPIO_BC(GPIOB) = GPIO_PIN_0 | GPIO_PIN_1     

void LedInit (v
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现不同频率闪烁LED灯,可以使用定时器来控制LED闪烁周期。 首先,选择一个合适的定时器,比如GD32系列芯片中常用的定时器TIM3。然后,按照以下步骤进行设置: 1. 启动定时器:配置定时器的时钟源、预分频系数和计数器周期,并使能定时器。 2. 配置定时器的输出比较模式:选择定时器通道,并设置比较值。 3. 配置GPIO引脚:将LED连接到相应的GPIO引脚上,并设置为输出模式。 4. 编写中断处理函数:在定时器溢出或比较匹配时触发中断,通过中断处理函数来控制LED的状态变化。 下面是一个简单的示例代码,实现两个LED以不同频率闪烁: ```c #include "gd32f30x.h" void delay(uint32_t count) { while(count--); } int main(void) { /* 启动定时器3 */ rcu_periph_clock_enable(RCU_TIMER3); timer_deinit(TIMER3); timer_parameter_struct timer_initpara; timer_struct_para_init(&timer_initpara); timer_initpara.prescaler = 7199; // 设置预分频系数 timer_initpara.period = 9999; // 设置计数器周期 timer_init(TIMER3, &timer_initpara); timer_enable(TIMER3); /* 配置定时器3的通道1输出比较模式 */ timer_channel_output_config(TIMER3, TIMER_CH_1, TIMER_OC_MODE_TOGGLE); timer_channel_output_pulse_value_config(TIMER3, TIMER_CH_1, 5000); // 设置比较值 timer_channel_output_state_config(TIMER3, TIMER_CH_1, TIMER_CCX_ENABLE); /* 配置GPIO引脚 */ rcu_periph_clock_enable(RCU_GPIOC); gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_0 | GPIO_PIN_1); while(1) { delay(500000); // 延时一段时间 gpio_bit_write(GPIOC, GPIO_PIN_0, (bit_status)(1 - gpio_output_bit_get(GPIOC, GPIO_PIN_0))); // 切换LED状态 } } ``` 在这个例子中,LED1连接到GPIOC的第0引脚,LED2连接到GPIOC的第1引脚。定时器TIM3的通道1配置为比较模式,比较值设置为5000。定时器每溢出一次,LED1的状态会切换一次,产生较慢的闪烁效果。 注意,上述代码仅供参考,具体实现可能因芯片型号、编译环境等而有所差异。请根据实际情况进行相应的修改和调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zmiyhl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值