温湿度仪工作指示灯闪烁编程

该博客详细介绍了温湿度仪中LED指示灯的编程实现,包括工程文件包的下载,系统嘀哒时钟配置,中断服务程序设置,延时函数编写,LED宏定义及引脚配置,并给出了系统主程序的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工程文件包下载

项目工程基础包压缩文件下载链接:.

系统嘀哒时钟系统的配置编程

#include "stm32f10x.h"
#include "systick.h"
//=============================================================================
//函数名称: SYSTICK_Init
//功能概要:初始化SYSTICK,1Ms中断1次
//参数名称:无
//函数返回:无
//注意    :SystemCoreClock/ 1000000:1us中断1次;SystemCoreClock/ 1000:1ms中断
//        一次
//=============================================================================
//中断服务程序在stm32f10x_it.c中
void SYSTICK_Init(void)
{		
	while (SysTick_Config(SystemCoreClock/1000000));  //10us
}

系统嘀哒时钟中断服务程序

//系统嘀哒中断处理程序
unsigned long CountNum=0;
void SysTick_Handler(void)   //10us中断
{
	if(CountNum!= 0x0)
		CountNum--;
}

系统延时t毫秒的函数

#include "delay.h"
extern  unsigned long CountNum;

void Delay_us(u32 t)  //t us
{
	CountNum=t;  
	while(CountNum!=0x0){;}
}

void Delay_ms(u32 t)  //t ms
{
	int i=0;
	for(i=0;i<t;i++)
	{
		Delay_us(1000);
	}
}

LED宏定义编程

#include "stm32f10x.h"
#define LED0_OFF  GPIO_SetBits(GPIOA,GPIO_Pin_0)
#define LED0_ON   GPIO_ResetBits(GPIOA,GPIO_Pin_0)
void GPIO_Config(void);	

LED引脚配置编程

#include "gpio.h"
void GPIO_Config(void)
{	
	//定义一个GPIO_InitTypeDef 类型的结构体
	GPIO_InitTypeDef  GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB  |RCC_APB2Periph_AFIO,ENABLE);
	//RCC_APB2Periph_AFIO,允许功能复用

	/*PB12  LED  红色 */
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;//选择要用的GPIO引脚	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置引脚模式为推免输出模式			 
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;	//设置引脚速度为50MHZ
	GPIO_Init(GPIOA, &GPIO_InitStructure);	//调用库函数,初始化GPIO
}

系统主程序

#include "stm32f10x.h"
#include "gpio.h"
#include "systick.h"
#include "delay.h"
//=============================================================================
//函数名称:main
//功能概要:主函数
//参数说明:无
//函数返回:int
//=============================================================================
 int main(void)
{
	int i=0;
	SystemInit();
	SYSTICK_Init();
  GPIO_Config();
	LED0_OFF;
  while(1)
  {	  
		Delay_ms(500);
		if (i==1)
		{	i=0;
			LED0_OFF;
		}else{
			i=1;
			LED0_ON;
		}		
  }		
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值