当前位置: 首页 > news >正文

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

http://www.mrgr.cn/news/730.html

相关文章:

  • Vue3+ElementUI中的Table组件的使用
  • 《SQL 中计算地理坐标两点间距离的魔法》
  • 《Ubuntu22.04环境下的ROS2学习笔记2》
  • WordPress 中 cURL 请求出现 504 网关超时错误的解决方法
  • 借助Vercel 十分钟搭建属于自己的AI应用站点
  • qt-17不规则窗体
  • 【微信小程序】生命周期
  • 数据结构——单链表
  • 【uni-app】使用天气API做一个天气APP(全过程)- 实况、逐小时、40日
  • Qt/QML学习-Dial
  • 贪心算法---跳跃游戏
  • 牛客网SQL 练习二
  • SpringBoot的事务/调度/缓存/邮件发送和一些Spring知识点总结
  • 虚幻5|布料模拟
  • 机器学习——全连接(MLP多层感知机)的理解
  • LLMs之Llama Coder:llama-coder的简介、安装和使用方法、案例应用之详细攻略
  • 一键运行RocketMQ5.3和Dashboard
  • 高可用负载均衡集群
  • C++的序列容器——数组
  • Docker Containerd初体验