您的位置:首页 > 财经 > 金融 > jq8900-16p代码索引

jq8900-16p代码索引

2024/12/23 10:56:38 来源:https://blog.csdn.net/qq_57484399/article/details/141173273  浏览:    关键词:jq8900-16p代码索引

jq8900-16p代码索引:

JQ8900.c

#include "stm32f10x.h"
#include "delay.h"
#include "JQ8900.h"void Init_One_line_Uart(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_12);
}//用于控制jq8900指令
void SendData(u8 addr)
{u8 i;sda(1);//拉高DelayUs( 1000);sda(0);//拉低DelayUs(3200);for ( i = 0; i < 8; i++ ) {sda(1);//拉高if ( addr & 0x01 )//高电平{DelayUs( 600 );sda(0);//拉低DelayUs( 210 );}else //低电平{DelayUs( 210 );sda(0);//拉低DelayUs( 600 );}addr >>= 1;//右移一位}sda(1);//拉高
}
//播放下一首
void Next(void)
{SendData(0x15);	
}
//播放上一首
void Previous(void)
{SendData(0x14);	
}
//设置音量
void Set_volume(u8 vol)
{SendData(0x0a);//清零数字SendData(vol);SendData(0x00);SendData(0x0c);//设置音量
}

JQ8900.h

#ifndef _JQ8900_H
#define _JQ8900_H
#include "stm32f10x.h"#define sda(EN) EN ?  GPIO_WriteBit(GPIOB,GPIO_Pin_12,Bit_SET):GPIO_WriteBit(GPIOB,GPIO_Pin_12,Bit_RESET)void SendData(u8 addr);
void Next(void);
void Previous(void);
void Set_volume(u8 vol);
void Init_One_line_Uart(void);#endif

delay.c

/***************************************************************************************************************************************************************************************	文件名: 	delay.c**	作者: 		张继瑞**	日期: 		2016-11-23**	版本: 		V1.0**	说明: 		利用systick做阻塞式延时**	修改记录:	************************************************************************************************************************************************************************************
**///单片机头文件
#include "stm32f10x.h"//delay头文件
#include "delay.h"//延时系数
unsigned char UsCount = 0;
unsigned short MsCount = 0;/*
************************************************************
*	函数名称:	Delay_Init
*
*	函数功能:	systick初始化
*
*	入口参数:	无
*
*	返回参数:	无
*
*	说明:		
************************************************************
*/
void Delay_Init(void)
{SysTick->CTRL &= ~(1 << 2);		//选择时钟为HCLK(72MHz)/8		103--9MHzUsCount = 9;					//微秒级延时系数MsCount = UsCount * 1000;		//毫秒级延时系数}/*
************************************************************
*	函数名称:	DelayUs
*
*	函数功能:	微秒级延时
*
*	入口参数:	us:延时的时长
*
*	返回参数:	无
*
*	说明:		此时钟(21MHz)最大延时798915us
************************************************************
*/
void DelayUs(unsigned short us)
{unsigned int ctrlResult = 0;us &= 0x00FFFFFF;											//取低24位SysTick->LOAD = us * UsCount;								//装载数据SysTick->VAL = 0;SysTick->CTRL = 1;											//使能倒计数器do{ctrlResult = SysTick->CTRL;}while((ctrlResult & 0x01) && !(ctrlResult & (1 << 16)));	//保证在运行、检查是否倒计数到0SysTick->CTRL = 0;											//关闭倒计数器SysTick->VAL = 0;}/*
************************************************************
*	函数名称:	DelayXms
*
*	函数功能:	毫秒级延时
*
*	入口参数:	ms:延时的时长
*
*	返回参数:	无
*
*	说明:		
************************************************************
*/
void DelayXms(unsigned short ms)
{unsigned int ctrlResult = 0;if(ms == 0)return;ms &= 0x00FFFFFF;											//取低24位SysTick->LOAD = ms * MsCount;								//装载数据SysTick->VAL = 0;SysTick->CTRL = 1;											//使能倒计数器do{ctrlResult = SysTick->CTRL;}while((ctrlResult & 0x01) && !(ctrlResult & (1 << 16)));	//保证在运行、检查是否倒计数到0SysTick->CTRL = 0;											//关闭倒计数器SysTick->VAL = 0;}/*
************************************************************
*	函数名称:	DelayMs
*
*	函数功能:	微秒级长延时
*
*	入口参数:	ms:延时的时长
*
*	返回参数:	无
*
*	说明:		多次调用DelayXms,做到长延时
************************************************************
*/
void DelayMs(unsigned short ms)
{unsigned char repeat = 0;unsigned short remain = 0;repeat = ms / 500;remain = ms % 500;while(repeat){DelayXms(500);repeat--;}if(remain)DelayXms(remain);}void delay(uint32_t t)
{while(t--);
}	void delay_us(u32 us)//微秒
{SysTick_Config(72);while(us-->0){while(!((SysTick->CTRL)&(1<<16)));}SysTick ->CTRL&=~SysTick_CTRL_ENABLE_Msk;
}void delay_ms(u32 ms)//毫秒
{SysTick_Config(72000);while(ms-->0){while(!((SysTick->CTRL)&(1<<16)));}SysTick ->CTRL&=~SysTick_CTRL_ENABLE_Msk;
}

delay.h

#ifndef _DELAY_H_
#define _DELAY_H_#include "stm32f10x.h"void Delay_Init(void);void DelayUs(unsigned short us);void DelayXms(unsigned short ms);void DelayMs(unsigned short ms);
void delay(uint32_t t);void delay_us(u32 us);
void delay_ms(u32 ms);
#endif

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com