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

[CW32F030系列] 【CW32F030CxT6 StartKit测评】005:点灯工程分析

[复制链接]
1719|10
 楼主| 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则是具体引脚。
  1. int32_t main(void)

  2. {  

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

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

  5.     __RCC_GPIOB_CLK_ENABLE();  //开启GPIOB时钟

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

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

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

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

  10.     GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);  

  11.     while (1)  

  12.     {  

  13.         GPIO_TogglePin(LED_GPIO_PORT, LED_GPIO_PINS);  

  14.         Delay(0xFFFF);  

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

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 的,最后一个示例是拿单片机画的。
海滨消消 发表于 2022-8-15 11:00 来自手机 | 显示全部楼层
申请原创原创有奖,哈哈
averyleigh 发表于 2022-8-19 20:01 | 显示全部楼层
来一个文件模板。     
yujielun 发表于 2022-8-20 13:09 | 显示全部楼层
这个超频的性能怎么样   
uptown 发表于 2022-8-20 16:13 | 显示全部楼层
驱动能力配置影响大吗   
jimmhu 发表于 2022-8-20 20:22 | 显示全部楼层
谢谢分享的。  
houjiakai 发表于 2022-8-21 20:38 | 显示全部楼层
最大支持多少Mhz的翻转?   
cehuafan 发表于 2022-8-21 22:10 | 显示全部楼层
源文件在哪里下载的呢   
rosemoore 发表于 2022-9-8 17:13 | 显示全部楼层
完整的工程代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

37

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部