|
ÔÚDACÈÎÎñÖÐÒѾʵÏÖÁËÈý½Ç²¨ºÍÕýÏÒ²¨µÄÉú³É£¬±¾´Î½áºÏ°´¼ü£¬Ê¹Óð´¼üÑ¡ÔñÊä³öµÄ²¨ÐΡ£
ÐÂÔöÈ«¾Ö±äÁ¿wave_select£¬µ±wave_select==0£¬Êä³öÈý½Ç²¨£¬µ±wave_select==1£¬Êä³öÕýÏÒ²¨¡£
ÔÚ100msÈÎÎñɨÃè°´¼ü£¬¸ù¾Ý°´Ïµİ´¼üÇл»²¨ÐΣ»ÔÚ10msÈÎÎñÖÐÊä³ö²¨ÐΡ£
void Timer_10msTask()
{
if(wave_select==0)
{
DAC_output();
}
else
{
DAC_output_Sinewave();
}
}
void Timer_100msTask()
{
static uint8_t led1level=BSP_IO_LEVEL_LOW;
if(keyscan(KEY_S1)==1)
// if(Key_Scan(KEY_S1)==1)
{
wave_select=0;
// led1level=!led1level;
// g_ioport.p_api->pinWrite(g_ioport.p_ctrl,LED1_BLUE,led1level);
// R_BSP_SoftwareDelay(350,BSP_DELAY_UNITS_MILLISECONDS);
}else if(keyscan(KEY_S2)==1)
{
wave_select=1;
}
}
Èý½Ç²¨ºÍÕýÏÒ²¨ÊµÏÖ´úÂëÈçÏÂ
/*
* dac.c
*
* Created on: 2024Äê12ÔÂ12ÈÕ
* Author: LXL
*/
#include "dac.h"
#include <math.h>
#include <stdint.h>
#include "haL_data.h"
uint16_t gs_dac_value=0;
uint64_t gs_starttime=0;
uint16_t DAC_value=0;
extern uint64_t gs_dwTick;
fsp_err_t DAC_Init(void)
{
fsp_err_t status = R_DAC_Open(&g_dac0_ctrl, &g_dac0_cfg);
status = R_DAC_Write(&g_dac0_ctrl, 0);
status = R_DAC_Start(&g_dac0_ctrl);
gs_starttime = gs_dwTick;
return status;
}
fsp_err_t DAC_output(void)
{
static int16_t a=1;
gs_dac_value=(uint16_t)(gs_dac_value+a);
if(gs_dac_value>=0x0FFF)
// if (gs_dac_value >= 0x5)
{
a = -1;
}
else if (gs_dac_value == 0)
{
a = 1;
}
fsp_err_t status = R_DAC_Write(&g_dac0_ctrl, gs_dac_value);
return status;
}
fsp_err_t DAC_output_Sinewave(void)
{
fsp_err_t ret;
uint64_t currenttime=gs_dwTick;
// uint16_t DAC_value=0;
uint64_t t_ms=(currenttime-gs_starttime); //ms
double t_s =(double)t_ms/1000;//(double)(t_ms/1000);
DAC_value=(uint16_t)((sin(t_s)+1)/2*4096);
gs_dac_value=DAC_value;
ret = R_DAC_Write(&g_dac0_ctrl, gs_dac_value);
return ret;
}
ʵÑéÏÖÏó£º
½«dacÊä³öÒý½ÅºÍLED3ʹÓöŰîÏßÁ¬½Ó¡£