我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 865|回复: 1

【STM32F103C8T6】核心板 呼吸灯实验 之入门系列2

[复制链接]

该用户从未签到

32

主题

69

回帖

174

积分

二级逆天

积分
174

终身成就奖

QQ
发表于 2021-2-13 09:31:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、本章简介 本章以core-G1【STM32F103C8T6】核心板 呼吸灯实验 之入门系列2工程为例,介绍STM32关于GPIO的配置方法,大家通过控制STM32的GPIO引脚来使RGB灯达到呼吸灯的效果。
二、实验平台 1、硬件:core-G1核心板 2、编译软件:MDK-RAM Plus V5.26.2.0 3、STM32F10X固件库版本:V3.5 4、仿真器:QQ14A编译调试器
三、版权声明 作者:职业劝退师 声明:转载请注明出处。 纠错/业务合作:1911996023@qq.com 本例程开源资料下载地址:http://www.enmaking.com/material/ma_4HBed59acore-G1【STM32F103C8T6】核心板购买链接:https://item.taobao.com/item.htm ... amp;id=625712740336
QQ14A编译调试器购买链接: https://item.taobao.com/item.htm ... amp;id=626843731543
四、实验前提 1、在进行本文步骤前,请先阅读以下章节 1)《Cortex-M3权威指南(中文)》的第一章至第五章章节。 2)《STM32中文参考手册_V10》的第八章节。
2、在进行本文步骤前,请先实现以下章节: 1)MDK5的软件安装。安装教程链接如下http://www.enmaking.com/article/ar_cXHjU6Uj2)阅读《core-G1【STM32F103C8T6】核心板 跑马灯实验 之入门系列1》文章,链接如下http://www.enmaking.com/article/ar_TTYB6zjb
五、基础知识 因为人的视觉具有余晖效应,通过改变GPIO的高电平占空比,可以达到改变LED灯亮度的效果,即可让人产生LED在慢慢熄灭或慢慢点亮的视觉效应。
六、硬件原理 1、原理图

                               
登录/注册后可看大图

2、由上面两图可知 名称    引脚    控制方法 LEDR    PB8    高电平灭、低电平亮 LEDB    PC13    高电平灭、低电平亮 LEDG    PB9    高电平灭、低电平亮 现在我们知道要操作哪些IO口,就可以进行程序编写了。
七、实验步骤 1、编写RGB灯驱动程序。void LED_Init(void){GPIO_InitTypeDef  GPIO_InitStructure;RCC->APB2ENR|=1<<3;    //使能PORTB时钟            RCC->APB2ENR|=1<<4;    //使能PORTC时钟    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//设置为推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//最大输出速度为50MZHGPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;GPIO_Init(GPIOC, &GPIO_InitStructure);GPIOB->ODR|=3<<8;      //PB8 PB9 输出高GPIOC->ODR|=1<<13;      //PC13 输出高}
2、添加有关操作RGB灯的GPIO口宏定义,方便操作和调动。#define LEDB PCout(13)#define LEDG PBout(9)#define LEDR PBout(8)
3、将驱动程序添加到自己的工程中

                               
登录/注册后可看大图
4、编写自己的业务代码int main(void){u16 i=0,j=2000;delay_init(72);LED_Init();while (1){for(i=10;i<j;i++)//B->G{LEDB=1;LEDG=0;delay_us(i);LEDB=0;LEDG=1;delay_us(j-i);}LEDB=1;LEDG=0;delay_ms(1000);for(i=j-10;i>10;i--)//G->R{LEDG=0;LEDR=1;delay_us(i);LEDG=1;LEDR=0;delay_us(j-i);}LEDR=0;LEDG=1;delay_ms(1000);for(i=10;i<j;i++)//RB{LEDB=0;LEDR=1;delay_us(i);LEDB=1;LEDR=0;delay_us(j-i);}LEDB=0;LEDR=1;delay_ms(1000);}}
最后编译并将程序烧录到开发版中。
八、注意事项 暂无
九、实验结果 上电后任意时间内总有两个灯在亮,而且一个灯在慢慢变亮,另外一个灯则慢慢变暗。RGB灯整体显示的颜色也在变化。
回复

使用道具 举报

  • TA的每日心情
    开心
    2024-7-8 15:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    78

    主题

    5331

    回帖

    1万

    积分

    PADS-181217初级班

    积分
    16088

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    发表于 2021-2-14 08:57:16 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    每日签到,有金币领取。


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表