首页 > 其他分享 >2、蓝牙打印机点灯-GPIO输出控制

2、蓝牙打印机点灯-GPIO输出控制

时间:2025-01-04 15:34:30浏览次数:6  
标签:打印机 led void Systick 蓝牙 delay SysTick GPIO

1、硬件

1.1、看原理图

初始状态位高电平.

需要驱动PA1输出高低电平控制PA1.

1.2、看手册

a、系统架构图

GPIOA在APB2总线上。

b、RCC使能

GPIOA在第2位。

c、GPIO寄存器配置

端口:PA1

模式:通用推挽输出模式 -- 输出0、1即可

速度:50M --- 芯片的最高频率是72M,输出高低电平的时候2M、10M、50M都可以。

2、软件

2.1、创建led.c和led.h文件

led.h

#ifndef _LED_H
#define _LED_H

#include "stm32f10x.h"
#include "io_bit.h"




#endif

led.c

#include "led.h"

2.2、将led.c加载到项目中

2.3、初始化灯操作

led.c

/********************************************************************
*  函数名:  void init_led(void);
*  功能描述: LED初始化
*  输入参数:无   
*  返回:     无      
*  其他:          
*  硬件连接: PA1   低电平亮,高电平灭
*********************************************************************/	
void init_led(void){
	// 使能2号引脚
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	// 初始化引脚
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1;
	
	// 推挽输出
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOA,&GPIO_InitStruct);
	
	// 初始状态
	LED1 = 1;
}

led.h

#ifndef _LED_H
#define _LED_H

#include "stm32f10x.h"
#include "io_bit.h"

#define LED1 PAout(1)

void init_led(void);


#endif

2.4、添加延时模块

添加delay.h和delay.c

delay.c

/***********************************************************************************************
SysTick 控制及状态寄存器 (SysTick->CTRL)地址:0xE000_E010

第0位:ENABLE,Systick 使能位  		 (0:关闭Systick功能;1:开启Systick功能)

第1位:TICKINT,Systick 中断使能位    (0:关闭Systick中断;1:开启Systick中断)

第2位:CLKSOURCE,Systick时钟源选择   (0:使用HCLK/8 作为Systick时钟;1:使用HCLK作为Systick时钟)

第16位:CountFlag,Systick计数比较标志,如果在上次读取本寄存器后,SysTick 已经数到了0,则该位为1。
		如果读取该位,该位将自动清零
*************************************************************************************************/


#include "stm32f10x.h"


///
static u8  fac_us=0;//us延时倍乘数
static u16 fac_ms=0;//ms延时倍乘数

/**************************************************************
 **** 函 数 名:delay_init(u8 SYSCLK)
 **** 功    能:延时初始化,配置systick时钟
 **** 参    数:SYSCLK  系统时钟 MHz
 **** 返    回:
 **** 其    他:SysTick的时钟固定为HCLK时钟的1/8
 ****
 **** 编    写:信盈达  冯工
 **** 编写时间:2014-10-21 23:29:39 
 **** 最后修改: 
**************************************************************/
void init_delay(u8 SYSCLK)
{
	SysTick->CTRL&=0xfffffffb;//bit2清空,选择外部时钟  HCLK/8
	
	fac_us=SYSCLK/8;		    
	fac_ms=(u16)fac_us*1000;
}		



/**************************************************************
 *** 函 数 名:	delay_ms(u16 nms)
 *** 功    能:	延时n毫秒
 *** 参    数:	nms   需要延时的毫秒数
 *** 返    回:
 *** 其    他:	SysTick->LOAD为24位寄存器,所以,最大延时为:
				nms <= 0xffffff* 8/(SYSCLK*1000)
				SYSCLK单位为MHz,nms单位为ms
				对72M条件下,nms<=1864
 ***
 *** 编    写:信盈达  冯工
 *** 编写时间:2014-10-21 23:29:39 
 *** 最后修改: 
**************************************************************/
void delay_ms(u16 nms)
{	 		  	  
	SysTick->LOAD=(u32)nms*fac_ms;		//时间加载(SysTick->LOAD为24bit)
	SysTick->VAL =0x00;           		//清空计数器
	SysTick->CTRL=0x01;          		//开始倒数  

	while( !(SysTick->CTRL & (1<<16)) );//等待时间到达 
	SysTick->CTRL=0x00;       			//关闭计数器
	SysTick->VAL |=0X00;       			//清空计数器	  	    
} 


/**************************************************
 *** 函 数 名:	delay_us(u16 nus)
 *** 功    能:	延时n微秒
 *** 参    数:	nus   需要延时的微秒数
 *** 返    回:
 *** 其    他:	SysTick->LOAD为24位寄存器,所以,最大延时为:
				nms <= 0xffffff* 8/SYSCLK
				SYSCLK单位为MHz,nus单位为us
				对72M条件下,nus<=1864135
 ***
 *** 编    写:	信盈达  冯工
 *** 编写时间:	2014-10-21 23:35:37
 *** 最后修改: 
**************************************************/
void delay_us(u32 nus)
{		
	SysTick->LOAD=(u32)nus*fac_us;		//时间加载(SysTick->LOAD为24bit)
	SysTick->VAL =0x00;           		//清空计数器
	SysTick->CTRL=0x01;          		//开始倒数  

	while( !(SysTick->CTRL & (1<<16)) );//等待时间到达 
	SysTick->CTRL=0x00;       			//关闭计数器
	SysTick->VAL |=0X00;       			//清空计数器	  	    
}

delay.h

#ifndef __DELAY_H
#define __DELAY_H

#include "stm32f10x.h"

void init_delay(u8 SYSCLK);
void delay_ms(u16 nms);
void delay_us(u32 nus);

#endif

2.5、测试代码

main.c

功能:隔1s灯的状态在亮和灭之间切换。


#include "led.h"
#include "delay.h"

int main()
{
	init_delay(72); // 全速72M
	init_led();
	
	
	while(1)
	{
		LED1 = 0;
		
		// 延迟
		delay_ms(1000);
		
		LED1 = 1;
		
		
		// 延迟
		delay_ms(1000);
	
	}
	
}

标签:打印机,led,void,Systick,蓝牙,delay,SysTick,GPIO
From: https://blog.csdn.net/amyliyanice/article/details/144929257

相关文章

  • 适合学生党蓝牙耳机什么牌子的好?学生党性价比高的蓝牙耳机推荐
    适合学生党蓝牙耳机什么牌子的好?对于学生党来说,选择一款性价比高的蓝牙耳机是既实用又划算的事情,无论是课堂间隙听歌放松、线上课程提升学习效率,还是运动时追求轻松自在,蓝牙耳机早已成为校园生活的必备单品,那么如何在有限预算内挑选到一款音质优秀、佩戴舒适又功能丰富的耳机呢......
  • 性价比超级高的蓝牙耳机有哪些?性价比很高的蓝牙耳机推荐分享
    在这个充满音乐与智能设备的时代,蓝牙耳机已经成为我们生活中不可或缺的一部分。无论是运动、工作还是日常通勤,一副好的蓝牙耳机都能让你享受无拘无束的音乐体验。那么对于追求高性价比的人来说,性价比超级高的蓝牙耳机有哪些?今天就给大家带来了四大性价比很高的蓝牙耳机推荐分享......
  • windows11连接蓝牙耳机声音差的解决方案
    前期在使用Windows10时,我的XM3通常是有HandsFree和正常输出两个通道的,走HandsFree通道则会触发通话模式,可以自己调整以适应不同的需求。但是升级到Windows11后,发现只剩下了一个耳机输出通道,但是音质直接降为通话音质,多次升降级无果,调整音质选项也没有作用。今日在知乎上看到......
  • 点风扇!手把手教你控制OrangePi3B的GPIO
    直接说结果用gpiosetgpio022=1来开启风扇,gpiosetgpio022=0可以关闭风扇。(需要sudo)确定GPIO接口买了OrangePi3B来当服务器,贴了挺大的一块散热片,但是负载高的时候还是会容易卡,会有几分钟SSH都连不上。正好外壳上有个可以安装风扇的孔。淘宝上卖的比较多的是一种使用插针的......
  • 新的一年,我决定拆解一个蓝牙接收器
    哈哈,容我介绍一下,如果大家对电子感兴趣,可以看一下下面的图片,会经常更新优秀的原创文章。再次感谢每一个努力的电子爱好者。今天我们来拆解一个蓝牙接收器,首先我们需要有一个直观的印象。下图就是我们这次需要拆解的对象。我再想这么小的接收器,电路是怎么放进去得呢,先别急,往下看......
  • GPIO引脚配置
    #include"led.h"//初始化PA8和PD2为输出口.并使能这两个口的时钟        //LEDIO初始化voidLED_Init(void){  GPIO_InitTypeDef GPIO_InitStructure;     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD,ENABLE);  ......
  • 蓝牙设备过多导致Win11出现不定时死机现象
    10月份之后发现自己的ROGFLOWX16笔记本开始不定时死机了。具体表现是正常使用过程突然死机(哪怕是轻负载),各种地方点不动,不能注销,不能重启,不能关机,我的电脑打不开,任务管理器打开是一片空白。仅有一些窗口最大化和最小化之类的功能可以点击。并且没有任何预兆,就是突然给你出现死机,......
  • 通过PowerShell命令批量删除蓝牙设备
    通过PowerShell命令批量删除蓝牙设备Get-PnpDevice|Where-Object{$_.FriendlyName-like"*需删除设备*"}|ForEach-Object{pnputil.exe/remove-device$_.InstanceId}使用管理员身份打开PowerShell将"需删除设备"换成具体的设备名称,两个*说明是宽泛搜索,设备名称的前面......
  • 记录一些蓝牙 BLE 心率服务信息
    首先是官方文档,但是感觉说的不是特别清晰:https://www.bluetooth.com/specifications/specs/heart-rate-profile-1-0/https://www.bluetooth.com/specifications/specs/heart-rate-service-1-0/然后是一个网友的总结:DeterminetheformatThe Bluetooth sitehasbeenreorga......
  • 骑行蓝牙耳机哪个好?精选五款爆款机型多维度实测!
    无论你追求运动时的动感激情,还是日常通勤的便捷舒适,骨传导耳机都能让你畅享高品质音频体验。然而,作为资深数码评测博主,我发现太多新手在选购时盲目迷信热门推荐了,入手后才发现耳机弊病百出,存在漏音严重、音质浑浊等问题,不仅无法带来沉浸式聆听感受,长时间佩戴还可能引起耳部不适......