效果演示:
添加ADC函数
bsp_adc.c
#include"bsp_adc.h"
//ADC转换完成标志位
volatile bool scan_complete_flag = false;
voidadc_callback(adc_callback_args_t*p_args)
{
FSP_PARAMETER_NOT_USED(p_args);
scan_complete_flag = true;
}
voidADC_Init(void)
{
fsp_err_terr;
err=R_ADC_Open(&g_adc0_ctrl,&g_adc0_cfg);
err=R_ADC_ScanCfg(&g_adc0_ctrl,&g_adc0_channel_cfg);
assert(FSP_SUCCESS==err);
}
/* 进行ADC采集,读取ADC数据并转换结果 */
doubleRead_ADC_Voltage_Value(void)
{
uint16_tadc_data;
doublea0;
(void)R_ADC_ScanStart(&g_adc0_ctrl);
while(!scan_complete_flag)//等待转换完成标志
{
;
}
scan_complete_flag = false;//重新清除标志位
/* 读取通道0数据 */
R_ADC_Read(&g_adc0_ctrl,ADC_CHANNEL_0,&adc_data);
/* ADC原始数据转换为电压值(ADC参考电压为3.3V) */
a0=(double)(adc_data*3.3/4095);
returna0;
}
bsp_adc.h文件
#ifndef __BSP_ADC_H
#define__BSP_ADC_H
#include"hal_data.h"
voidADC_Init(void);
doubleRead_ADC_Voltage_Value(void);
#endif
添加ADC
配置ADC
配置ADC通道
配置时钟
生成配置文件
添加print函数映像
printf_redirect.c文件
#include"hal_data.h"
#include"stdio.h"
#include<sys/stat.h>
#include<errno.h>
#undef errno
externinterrno;
int_write(intfile,char*ptr,intlen);
int_close(intfile);
int_fstat(intfile,structstat*st);
int_isatty(intfile);
int_read(intfile,char*ptr,intlen);
int_lseek(intfile,intptr,intdir);
#defineDEBUG_SERIAL_TIMEOUT 2000/portTICK_PERIOD_MS
externuint8_t uart_send_complete_flag;
int_write(intfile,char*ptr,intlen)
{
fsp_err_terr=FSP_SUCCESS;
FSP_PARAMETER_NOT_USED(file);
static bool uart_open= false;
if(false ==uart_open)
{
err=R_SCI_UART_Open(&g_uart9_ctrl,&g_uart9_cfg);
}
if(FSP_SUCCESS==err)
{
err=R_SCI_UART_Write(&g_uart9_ctrl,(uint8_t*)ptr,(uint32_t)len);
}
if(FSP_SUCCESS!=err)
{
len=-1;
}
while(uart_send_complete_flag ==0)
{
R_BSP_SoftwareDelay(10,BSP_DELAY_UNITS_MILLISECONDS);
}
uart_send_complete_flag =0;
returnlen;
}
int_close(intfile)
{
FSP_PARAMETER_NOT_USED(file);
return-1;
}
int_fstat(intfile,structstat*st)
{
FSP_PARAMETER_NOT_USED(file);
st->st_mode= S_IFCHR;
return0;
}
int_isatty(intfile)
{
FSP_PARAMETER_NOT_USED(file);
return1;
}
int_lseek(intfile,intptr,intdir)
{
FSP_PARAMETER_NOT_USED(file);
FSP_PARAMETER_NOT_USED(ptr);
FSP_PARAMETER_NOT_USED(dir);
return0;
}
int_read(intfile,char*ptr,intlen)
{
FSP_PARAMETER_NOT_USED(file);
FSP_PARAMETER_NOT_USED(ptr);
FSP_PARAMETER_NOT_USED(len);
return0;
}
程序代码:
*附件:ws2812.zip
更多回帖