⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 STM8s
💻 C
字号:
/* MAIN.C file
 * Copyright (c) 轩微科技
 本程序功能为让轩微科技STM8S105S4开发板左右触控键按下时发出蜂鸣且灭灯,滑块滑动时会发出答声,同时串口输出触控消息.
 本程序使用ST官方库进行操作.
 轩微科技保留所有权利.

 */


#include "stm8s.h"
#include "stm8s_uart2.h"
#include "stm8s_gpio.h"
#include "stm8s_beep.h"
#include "stm8_tsl_api.h"

unsigned char silder1=0;

void touchSensorEnable(void);
void xwopenTouchTask(void);

main()
{
	unsigned long i=0;
	//切换到外部16MHz晶振振荡器运行,让开发板高速运行
	CLK_HSECmd(ENABLE);
	CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_DISABLE);
	//反初始化GPIOD 
	GPIO_DeInit(GPIOD);
	//实始化GPIOD,配置其第0,2,3位为推挽输出,高电平.
	GPIO_Init(GPIOD, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);
	//反初始化串口
	UART2_DeInit();
	//初始化串口
	UART2_Init(38400,UART2_WORDLENGTH_8D,UART2_STOPBITS_1,UART2_PARITY_NO, UART2_SYNCMODE_CLOCK_DISABLE, UART2_MODE_TX_ENABLE);
	//串口发送串口初始化完成信息
	putStrLine("串口初始化完成.");
	//反初始化BEEP
	BEEP_DeInit();
	//初始化BEEP
	BEEP_Init(BEEP_FREQUENCY_2KHZ);
	//配置振荡器2M
	BEEP_LSICalibrationConfig(16000000);
	putStrLine("蜂鸣器初始化完成.");

	//初始化触摸
	TSL_Init();
	putStrLine("触摸服务初始化完成");
	//使能所有触控盘
	touchSensorEnable();
	putStrLine("触摸键已使能");

	while (1)
	{
		//执行客户端任务
		xwopenTouchTask();
		//检测按键状态
		TSL_Action();	
	}
}

void touchSensorEnable(void)
{
  u8 i;
#if NUMBER_OF_SINGLE_CHANNEL_KEYS > 0
  for (i = 0; i < NUMBER_OF_SINGLE_CHANNEL_KEYS; i++)
  {
    sSCKeyInfo[i].Setting.b.IMPLEMENTED = 1;
    sSCKeyInfo[i].Setting.b.ENABLED = 1;
    sSCKeyInfo[i].DxSGroup = 0x01; /* 0x00 = DxS disabled, other values = DxS enabled */
  }
#endif

#if NUMBER_OF_MULTI_CHANNEL_KEYS > 0
  for (i = 0; i < NUMBER_OF_MULTI_CHANNEL_KEYS; i++)
  {
    sMCKeyInfo[i].Setting.b.IMPLEMENTED = 1;
    sMCKeyInfo[i].Setting.b.ENABLED = 1;
    sMCKeyInfo[i].DxSGroup = 0x01; /* 0x00 = DxS disabled, other values = DxS enabled */
  }
#endif
}


void xwopenTouchTask(void)
{
  if ((TSL_GlobalSetting.b.CHANGED) && (TSLState == TSL_IDLE_STATE))
  {
    TSL_GlobalSetting.b.CHANGED = 0;

    if (sSCKeyInfo[0].State.b.DETECTED) /* KEY 1 touched */
    {
			putStrLine("左键被摸");
			GPIO_WriteHigh(GPIOD, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3);
			BEEP_Init(BEEP_FREQUENCY_2KHZ);
			BEEP_Cmd(ENABLE);
			return;
    }
		else if(sSCKeyInfo[0].State.b.IDLE)
		{
			GPIO_WriteLow(GPIOD, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3);
			BEEP_Cmd(DISABLE);
		}
		if (sSCKeyInfo[1].State.b.DETECTED)
		{
			putStrLine("右键被摸");
			GPIO_WriteHigh(GPIOD, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3);
			BEEP_Init(BEEP_FREQUENCY_2KHZ);
			BEEP_Cmd(ENABLE);
			return;
		}
		else if (sSCKeyInfo[1].State.b.IDLE)
		{
			GPIO_WriteLow(GPIOD, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3);
			BEEP_Cmd(DISABLE);
		}
  }
	else  if((TSL_GlobalSetting.b.LOCKED) && (silder1!=sMCKeyInfo[0].Position))
	{
		BEEP_Init(BEEP_FREQUENCY_4KHZ);
		BEEP_Cmd(ENABLE);
		silder1=sMCKeyInfo[0].Position;		
		GPIO_WriteHigh(GPIOD, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3);
		putStr("滑块值:");
		putIntLine(silder1);	
		GPIO_WriteLow(GPIOD, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3);
		BEEP_Cmd(DISABLE);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -