C8T6超绝模块--LED

ops/2024/9/25 19:14:26/

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);}
}

至此代码结束


http://www.ppmy.cn/ops/105545.html

相关文章

2024年高教社杯数学建模国赛论文格式规范+优秀论文分享

论文是数模竞赛中最终的结果,通常一个好的论文写作以及排版可以提升10-20分数(在百分制评审的数模竞赛中,2023年某赛区省三36分,省一46分)。因此,为了可以让大家快速了解数模的论文排版以及格式我们给大家收…

React 响应事件

文章目录 发现宝藏基本事件处理解析代码 事件处理函数的参数解析代码 事件处理中的箭头函数解析代码 事件处理中的防止默认行为解析代码 结论 发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【…

【openwrt-21.02】T750 openwrt MT7916 客户端连接5G WiFi出现无法上网问题分析及解决方案

Openwrt版本 NAME="OpenWrt" VERSION="21.02-SNAPSHOT" ID="openwrt" ID_LIKE="lede openwrt" PRETTY_NAME="OpenWrt 21.02-SNAPSHOT" VERSION_ID="21.02-snapshot" HOME_URL="https://openwrt.org/" …

微服务--Nacos配置管理

Nscos统一配置管理 Nacos配置管理的统一配置管理是一个在分布式微服务架构中至关重要的功能,它允许开发者将应用的配置信息集中存储和管理,实现配置的动态更新和共享。以下是关于Nacos配置管理的统一配置管理的详细解析: 一、Nacos配置管理…

人该怎样活着呢?48

人该怎样活着呢? A多观察多思考 【思考问答】 (20240411) B记录自己的灵感。 (20240412) 别人抢不走的东西:肚子里的食物,脑子里的知识,还有梦想(202011…

SNMP和TR069分析比较大全

SNMP和TR-069比较 总结:TR-069定义了2部分内容,LAN和WAN的。而SNMP内容定义上对此不区分。SNMP范围上更宽一些,没有针对各种不同的网络专门定义,只是根据各个网络的小元素去定义MIB,而TR-069针对LAN和WAN做了比较详细的参数定义。安全性方面,两者都没有很好的定义,例如防…

HTTP/3

http相关知识点 HTTP/3是超文本传输协议(HTTP)的最新版本,旨在进一步提高Web性能和安全性。HTTP/3的显著变化是它基于QUIC(Quick UDP Internet Connections)协议,而不是之前版本中使用的TCP协议。QUIC是由…

宣布 Vue 3.5 版发布

宣布 Vue 3.5 版发布 今天我们很高兴地宣布 Vue 3.5 版“天元突破红莲螺岩”正式发布! 这一小版本发布没有破坏性更改,包括内部改进和一些有用的新特性。我们将在这篇博客中介绍一些亮点 - 详细的更改和新特性请查阅 GitHub 上的完整变更日志。 响应式…