STM32F103点亮LED灯和实现LED闪烁(标准库)

news2024/11/19 11:17:15

芯片:STM32F103GCT6
原理图:
在这里插入图片描述
实现:PC6——闪烁,PC7——常亮
main.c

//头文件
#include "stm32f10x.h"
#include "user.h"

//全局变量
uint8_t  g_1s_flag = 0;
uint8_t  g_uart1_rx_done = 0;

uint32_t g_ms = 0;
uint32_t g_s = 0;

uint8_t  g_uart1_rx_buff[256] = {0};

uint16_t Compare = 0;

void User_tick_timer_handler(void)
{
    g_ms++;
    
    if((g_ms%500) == 0)
    {
        if(PCin(13) == 1)
        {
            PCout(13) = 0;
        }
        else
        {
            PCout(13) = 1;
        }
    }
    
    if((g_ms%1000) == 0)
    {
        g_s++;
        g_1s_flag = 1;
    }
}
/******************************************************************************
* 函数名称:main
* 功能概要:主函数
* 参数说明:无
* 函数返回:无
******************************************************************************/
int main(void)
{
    Delay_init();               //定时器延时初始化
//    Usart1_init(9600);        //Uart1初始化
//    NVIC_Configuration();       //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
    GPIO_Configuration();       //IO配置
//    TIM2_init(999, 71);         //TIM2初始化,arr = 定时us*[72/(psc+1)]-1,这里定时1000us
    TIM3_init();          //TIM3初始化,arr = 定时us*[72/(psc+1)]-1,这里定时50us
//    delay_ms(10);  
	GPIO_SetBits(GPIOC, GPIO_Pin_7 );		 
    while(1)
    {
	GPIO_ResetBits(GPIOC, GPIO_Pin_7 );	
    }
}

user.c

/******************************************************************************
 * Source code file of user.c
******************************************************************************/
#include "user.h"

/******************************************************************************
* 函数名称:GPIO_Configuration
* 功能概要:GPIO初始化
* 参数说明:无
* 函数返回:无
******************************************************************************/
void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE);
//==============
//  LED01 -> PC7     LED02 -> PC6  
//==============
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
  GPIO_Init(GPIOC, &GPIO_InitStructure);
}

/******************************************************************************
* 函数名称:TIM3_init
* 功能概要:定时器3初始化
* 参数说明:arr - 自动重装值
*           psc - 时钟预分频数
* 函数返回:无
* 备注:    这里时钟选择为APB1的2倍,而APB1为36M
******************************************************************************/
void TIM3_init(void )
{
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    NVIC_InitTypeDef         NVIC_InitStructure;
    TIM_OCInitTypeDef        TIM_OCInitStructure;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);    //时钟使能
                             
    //定时器TIM3初始化
    TIM_TimeBaseStructure.TIM_Period =1000-1; 
    TIM_TimeBaseStructure.TIM_Prescaler =7200-1; //设置用来作为TIMx时钟频率除数的预分频值
    TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
	TIM_TimeBaseStructure.TIM_RepetitionCounter=0;
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位

//    TIM_ClearFlag(TIM3,TIM_FLAG_Update);
	  /* Channel 1, 2,3 and 4 Configuration in PWM mode */
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//输出模式1:占空比模式
	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
	TIM_OCInitStructure.TIM_Pulse = 0;
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
	TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
	 
	TIM_OC1Init(TIM3, &TIM_OCInitStructure);

	/*中断优先级NVIC设置*/
	NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;                                
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;        //先占优先级1级
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;                        //从优先级1级
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                //使能IRQ通道
	NVIC_Init(&NVIC_InitStructure);                                                         //初始化NVIC寄存器
	 
	TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE );                                 //使能TIMx指定的中断
// 	TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
//    TIM_ARRPreloadConfig(TIM3, ENABLE);

	GPIO_SetBits(GPIOC, GPIO_Pin_6); 	//LED初始化

    TIM_Cmd(TIM3, ENABLE);  //使能TIMx
}

void TIM3_IRQHandler(void)
{
    if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)   //检查TIM3更新中断发生与否
    {
		GPIO_WriteBit(GPIOC,GPIO_Pin_6,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_6))));   //取反PB.1

        TIM_ClearITPendingBit(TIM3, TIM_IT_Update);     //清除TIMx更新中断标志 

    }
}
/******************************************************************************
 * End of file
******************************************************************************/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1863564.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

免交互简单操作

免交互 交互:我们发出指令控制程序的运行,程序在接收到指令后按照指令的效果作出对应的反应 免交互:间接的,通过第三方的方式把指令传给程序,不用直接下达指令 Here Document免交互 这是命令行格式,也可…

PointNet数据预处理+网络训练

PointNet数据预处理网络训练 数据预处理分类网络的训练分割网络训练分类和分割的结果 数据预处理 数据预处理,这里仅介绍一个shapenetdataset; class ShapeNetDataset(data.Dataset):def __init__(self,root,npoints2500,classificationFalse,class_ch…

没有手机怎么办呐!高考成绩出来了:请不要吹灭别人的灯——早读(逆天打工人爬取热门微信文章解读)

结婚的时候红包随礼随多少呢 引言Python 代码第一篇 洞见 高考成绩出来了:请不要吹灭别人的灯第二篇结尾 为什么是这个标题呢? 是因为摸鱼看足球直播 主播好兄弟结婚 他老婆问他要红包 引言 今天早上停电了 大概是在3点多的时候 我本身一直都没有开空调…

SAP-SD-修改字段描述

在销售订单中,想修改某字段名的描述,以客户组12为例,如下图 现在想把这个字段修改为客户组1,选择-F1 双击“数据元素” 双击 域 转到-翻译

移动硬盘删除的文件能恢复吗?一文揭晓答案!

“我很喜欢把重要的文件都存储到移动硬盘中,但今天在操作时误删了比较重要的一些文件。大家有什么方法可以帮我恢复里面的重要数据吗?” 在数字世界的浩瀚宇宙中,我们的每一份文件、每一张照片、每一个视频,都是一段珍贵的记忆&am…

修改 Linux 终端提示符的色彩与字体

1、引言 Linux 终端是许多开发者和系统管理员每天工作的主要工具之一。但你是否曾留意过那个位于命令行开头的提示符?是不是觉得它有点单调?别担心,本文将介绍如何通过修改提示符的颜色和字体,为你的 Linux 终端增添一抹独特的色…

昇思25天学习打卡营第二天|张量 Tensor

背景 华为组织了昇思25天学习学习营,提供免费算力,算力支持是昇腾Ascend 910芯片96G内存,很给力。 第一天的学习内容可以阅读文章: 昇思25天学习打卡营第一天|快速入门 学习内容 今天的学习内容是张量。如果线性代数学的好的同…

python - 运算符 / 条件语句 / 数字类型

一.运算符 >>> 5<3 False >>> 5<3 False >>> 5>3 True >>> 5>3 True >>> 53 False >>> 5!3 True 与操作and&#xff1a; >>> 5<3 and 2<4 False >>> 5>3 and 2<4 True 二…

解锁高效办公:ONLYOFFICE版本8.1新功能揭秘与个人使用体验

文章目录 &#x1f4af;ONLYOFFICE 桌面编辑器 8.1 ✍1 新增功能介绍✍2 轻松编辑器PDF文件&#x1f353;2.1 PDF新增编辑器操作&#x1f353;2.2 PDF新增表单操作 ✍3 用幻灯片版式快速修改幻灯片✍4 无缝切换文档编辑、审阅和查看模式✍5 改进从右至左语言的支持 & 新的本…

景联文科技构建高质量多轮对话数据库,赋能AI交互新飞跃

近年来&#xff0c;大语言模型的发展极大推动了自然语言处理领域的进步&#xff0c;大语言模型正引领智能对话领域进入一个全新时代&#xff0c;不仅提升了对话体验的自然度和效率&#xff0c;也为探索更加人性化、智能化的交互方式开辟了道路。 景联文科技作为大语言模型数据服…

【PB案例学习笔记】-24创建一个窗口图形菜单

写在前面 这是PB案例学习笔记系列文章的第24篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

【面试干货】Java中new与clone操作对象的比较

【面试干货】Java中new与clone操作对象的比较 1、new操作符创建对象的过程2、clone方法创建对象的过程3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、new操作符创建对象的过程 new操作符在Java中用于创建对象&#xff0c;并执行…

MySQL索引优化解决方案--索引优化(4)

排序优化 尽量避免使用Using FileSort方式排序。order by语句使用索引最左前列或使用where子句与order by子句条件组合满足索引最左前列。where子句中如果出现索引范围查询会导致order by索引失效。 优化案例 联表查询优化 分组查询优化 慢查询日志

简约的服务器监控工具Ward

什么是 Ward &#xff1f; Ward 是一个简单简约的服务器监控工具。 Ward 支持自适应设计系统。此外&#xff0c;它还支持深色主题。它仅显示主要信息&#xff0c;如果您想查看漂亮的仪表板而不是查看一堆数字和图表&#xff0c;则可以使用它。 Ward 在所有流行的操作系统上都能…

SiLM585x系列SiLM5851NHCG-DG一款具有分离的管脚输出 单通道隔离驱动器 拥有强劲的驱动能力

SiLM585x系列SiLM5851NHCG-DG是一款单通道隔离驱动器&#xff0c;具有分离的管脚输出&#xff0c;提供3.0A源电流和6.0A灌电流。主动保护功能包括退饱和过流检测、UVLO、隔离故障报警和 2.5A 米勒钳位。输入侧电源的工作电压为3V至5.5V&#xff0c;输出侧电源的工作电压范围为1…

深度学习项目实例(一)—— 实时AI换脸项目

一、前言 人工智能&#xff08;AI&#xff09;技术的快速发展为各个领域带来了革命性的变化&#xff0c;其中之一就是人脸识别与图像处理技术。在这之中&#xff0c;AI换脸技术尤其引人注目。这种技术不仅在娱乐行业中得到广泛应用&#xff0c;如电影制作、视频特效等&#xf…

想要用tween实现相机的移动,three.js渲染的canvas画布上相机位置一点没动,如何解决??

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

Linux入门攻坚——27、httpd2.4配置使用、lamp基础

CentOS 7上&#xff0c;httpd已经到了2.4版本&#xff0c;新增了很多新特性&#xff1a; &#xff08;1&#xff09;MPM支持运行DSO机制&#xff1b;以模块形式按需加载 &#xff08;2&#xff09;支持event MPM&#xff1b; &#xff08;3&#xff09;支持异步读写&#xff1…

微服务+云原生:打造高效、灵活的分布式系统

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、云原生概述 2、微服务概述 二、微服务架构基础 1、…

ADS SIPro使用技巧之数据分坐标轴显示

在SIPro data display页面中显示数据时&#xff0c;逐个显示数据非常地麻烦&#xff0c;可读性也较差&#xff1b; 常规的做法&#xff0c;是将数据拖入到一个显示窗口中进行显示&#xff0c;但是&#xff0c;当数据量较多或者各数据之间的数值差异较大时&#xff0c;可视化效果…