发新帖本帖赏金 50.00元(功能说明)我要提问
返回列表
[CW32F030系列]

【CW32F030CxT6 StartKit测评】005:点灯工程分析

[复制链接]
173|2
手机看帖
扫描二维码
随时随地手机跟帖
kevinfan|  楼主 | 2022-8-3 22:26 | 显示全部楼层 |阅读模式
本帖最后由 kevinfan 于 2022-8-4 18:15 编辑

@21小跑堂  #申请原创# #技术资源# #有奖活动# #每日话题#
上一篇体验了简单的电灯程序,那么这个程序是如何实现的呢?在固件包CW32F030_StdPeriph_Lib中的Examples目录我们找到了电灯工程gpio目录,gpio_blink项目就是用来控制 GPIO LED 闪烁 。
2b491f63d2363db32e64117767533883
我们来看下gpio_blink的工程文件,.uvprojx是Keil V5的工程文件,.uvoptx是Keil V5工程选项配置文件。双击Project.uvprojx打开工程,工程中主要包含了源文件和头文件。头文件主要是CW32F030提供的函数引用库,源文件则是用来构建项目的功能。

1d376ab5a820bf6d8634cc4f21406fd5

main.c文件是用户程序的入口也是我们程序的起始位置,我们来看下程序都做了什么。GPIO_InitTypeDef定义了点灯的全局初始化类型,根据GPIO_InitTypeDef中指定的参数初始化外设硬件。RCC_HSI_Enable则是通过SHI配置RCC时钟寄存器来获取系统时钟,__RCC_GPIOB_CLK_ENABLE用来开启GPIOB时钟。GPIO_Init用来初始化需要用到的引脚的工作模式,包括具体引脚的工作速度、是否复用模式、上下拉等等参数。GPIO_TogglePin用来翻转某个引脚的电平状态,参数GPIOx为引脚所在的组号,GPIO_Pin则是具体引脚。
int32_t main(void) 

{  

    GPIO_InitTypeDef GPIO_InitStruct;  //结构体:全局初始化类型

    RCC_HSI_Enable(RCC_HSIOSC_DIV6);  //启用RCC系统时间

    __RCC_GPIOB_CLK_ENABLE();  //开启GPIOB时钟

    GPIO_InitStruct.IT = GPIO_IT_NONE;  //没有被选中

    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  //开漏输出

    GPIO_InitStruct.Pins = LED_GPIO_PINS;  //选用的管脚

    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;  //管脚的速率

    GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);  

    while (1)  

    {  

        GPIO_TogglePin(LED_GPIO_PORT, LED_GPIO_PINS);  

        Delay(0xFFFF);  

    }
延时
这里的Delay是给程序一个间隔时间,达到一个闪烁的效果。通过while循环调用GPIO_TogglePin来点亮LED灯,0Xffff是16进制字符转换成十进制等于65535。
void Delay(__IO uint16_t nCount)  
        {  
            /* Decrement nCount value */  
            while (nCount != 0)  
            {  
                nCount--;  
            }  
        }  

LED点亮原理
一般情况下LED可以直接在LED两端接上电源和地线来连接,但是LED一般是额定电流。电流太大会烧坏LED,通常我们会串联电阻来调节电流。这里用个简单的单片机为例,
在单片机IO端连接LED的负极或正极,如果接LED的负极那么IO端默认电平需要设置为高电平(即默认灯灭),LED另一个引脚需要接VCC(直流5V电源)。当需要点亮LED时,只需将开发板对的IO端电平拉低即可。如果IO端接LED正极那么单片机IO端默认电平需要设置为低电平,LED的另一端接GND(负极)。当需要点亮LED时,只需要将开发板对应IO电平拉高。
4f71f76edf628e6ee0f02b24dbb1b43c


使用特权

评论回复

打赏榜单

21ic小管家 打赏了 50.00 元 2022-08-10
理由:贡献奖

daichaodai| | 2022-8-4 08:17 | 显示全部楼层
这是芯源的片子?

使用特权

评论回复
kevinfan|  楼主 | 2022-8-4 09:58 | 显示全部楼层
前面都是CW32F030CxT6 的,最后一个示例是拿单片机画的。

使用特权

评论回复
发新帖 本帖赏金 50.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则