欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > C8T6超绝模块--LED

C8T6超绝模块--LED

2024/10/25 5:19:05 来源:https://blog.csdn.net/2403_82385265/article/details/141871081  浏览:    关键词:C8T6超绝模块--LED

C8T6超绝模块–LED

大纲

  1. 怎样点亮LED
  2. 结构体分析
  3. 代码流程

具体案例

怎样点亮LED

首先不同的芯片的接法不一样,需要自己查看自己的芯片的原理图,我使用的是C8T6,使用的PC13接入的LED
在这里插入图片描述
注意看:怎么才能使LED灯亮呢?
如图一边接入的是3.3V的外接电压,而我们需要电流流过需要PC13是低电压,这样有电势差才会使产生电流让小灯亮,初始化时我们一般控制默认接入高电压,使其不亮

结构体分析

下面带来的是GPIO的结构体和其成员

typedef struct
{uint16_t GPIO_Pin;             // 决定是哪个引脚GPIOSpeed_TypeDef GPIO_Speed;  // 确定GPIO传输的速度GPIOMode_TypeDef GPIO_Mode;    // 确定GPIO的工作模式}GPIO_InitTypeDef;

代码流程

  1. 首先我们应该打开时钟,只有打开时钟才能工作
  2. 配置GPIO
  3. 初始化GPIO

下面是LED灯的GPIO的初始化函数

LED灯的GPIO的初始化函数

void LED_GPIO_Config(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Pin = LED_G_GPIO_PIN;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(LED_G_GPIO_PORT, &GPIO_InitStruct);}	

注意:具体打开哪个时钟还是要通过查阅数据手册,看我们需要初始化的外设具体在哪个线程上,我们这里端口GPIOC在APB2的线程上,所以调用的是APB2时钟的打开函数

点灯或熄灭灯(LED的H文件)

其实,灯的亮灭是通过高低电压来控制的

#define ON 1
#define  OFF 0// \C语言里面的续航符,要求后面不能有任何东西
#define LED_G(a)	if(a)\GPIO_ResetBits(GPIOC,GPIO_Pin_13); \else \GPIO_SetBits(GPIOC,GPIO_Pin_13);

而我们这里的 GPIO_ResetBits 和 GPIO_SetBits 两个函数是给指定的端口的引脚写入高低电压,
根据传入的a是ON或者OFF来写入电压

补充一个小灯反转的函数

				
// ^ 异或,相同为0,不同为1
// 通过下面的异或可以实现每次按键就改变LED灯的ODR寄存器状态#define LED_G_TOGGLE 	{LED_G_GPIO_PORT ->ODR ^= LED_G_GPIO_PIN;}

main函数

void Delay( uint32_t count)
{for(;count != 0;count--);
}int main(void)
{LED_GPIO_Config();while(1){// GPIO_SetBits(GPIOC,GPIO_Pin_13);LED_G(OFF);Delay(0xFFFFF);// GPIO_ResetBits(GPIOC,GPIO_Pin_13);LED_G(ON);Delay(0xFFFFFF);}
}

至此代码结束

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com