新手入门
- 积分
- 8
- 金钱
- 8
- 注册时间
- 2017-6-28
- 在线时间
- 2 小时
|

楼主 |
发表于 2017-6-28 12:13:00
|
显示全部楼层
发现是ADC采样赋值的问题,能再帮我看一下吗?
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "lcd.h"
#include "sdram.h"
#include "w25qxx.h"
#include "nand.h"
#include "mpu.h"
#include "sdmmc_sdcard.h"
#include "usmart.h"
#include "malloc.h"
#include "ftl.h"
#include "ff.h"
#include "exfuns.h"
#include "./adc/bsp_adc.h"
// #include "./usart/bsp_usart.h"
#include "stdio.h"
#include "stm32f7xx.h"
/************************************************
ALIENTEK 阿波罗STM32F7开发板 实验42
FATFS实验-HAL库函数版
技术支持:www.openedv.com
淘宝店铺:http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司
作者:正点原子 @ALIENTEK
************************************************/
// ADC1转换的电压值通过MDA方式传到SRAM
extern __IO uint16_t ADC_ConvertedValue;
// 局部变量,用于保存转换计算后的电压值
float ADC_Vol;
// 以下来自FATFS 程序
FIL fsrc,fdst;
// UINT br, bw; // File R/W count 已经在exfuns.c 中定义过了
BYTE buffer[512]; // file copy buffer
BYTE textFileBuffer[] = "TIME | ADC_Value \r\n";
// float dataBuffer[4] = {11.10,11.21,4.542,415.3};
char dataTemp[40];
// 以上来自FATFS 程序
static void Delay(__IO uint32_t nCount) //简单的延时函数
{
for(; nCount != 0; nCount--);
}
int main(void)
{
u32 total,free;
u8 t=0;
u8 res=0;
float ADC_BUF[512];
int i,j;
Cache_Enable(); //打开L1-Cache
MPU_Memory_Protection(); //保护相关存储区域
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(432,25,2,9); //设置时钟,216Mhz
delay_init(216); //延时初始化
uart_init(115200); //串口初始化
usmart_dev.init(108); //初始化USMART
Rheostat_Init();
LED_Init(); //初始化LED
KEY_Init(); //初始化按键
SDRAM_Init(); //初始化SDRAM
LCD_Init(); //初始化LCD
W25QXX_Init(); //初始化W25Q256
my_mem_init(SRAMIN); //初始化内部内存池
my_mem_init(SRAMEX); //初始化外部内存池
my_mem_init(SRAMDTCM); //初始化CCM内存池
POINT_COLOR=RED;
LCD_ShowString(30,50,200,16,16,"Apollo STM32F4/F7");
LCD_ShowString(30,70,200,16,16,"FATFS TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,"2016/7/15");
LCD_ShowString(30,130,200,16,16,"Use USMART for test");
while(SD_Init())//检测不到SD卡
{
LCD_ShowString(30,150,200,16,16,"SD Card Error!");
delay_ms(500);
LCD_ShowString(30,150,200,16,16,"Please Check! ");
delay_ms(500);
LED0_Toggle;//DS0闪烁
}
FTL_Init();
exfuns_init(); //为fatfs相关变量申请内存
f_mount(fs[0],"0:",1); //挂载SD卡
// 以下程序,在data.txt中写入一行字符串。
res = f_open(&fdst,"0:/Data4.txt", FA_WRITE | FA_OPEN_ALWAYS);//以写和追加的方式打开文件
if ( res == FR_OK )
{
f_lseek(&fdst, f_size(&fdst)); //将文件指针移动到文件末尾
res = f_write(&fdst, textFileBuffer, sizeof(textFileBuffer), &bw); // 将缓冲区的数据写到文件中
printf( "\r\n 文件创建成功 \n" );
f_close(&fdst); //关闭文件
}
// 以上程序,在data.txt中写入一行字符串。
LCD_Fill(30,150,240,150+16,WHITE); //清除显示
while(exf_getfree("0:",&total,&free)) //得到SD卡的总容量和剩余容量
{
LCD_ShowString(30,150,200,16,16,"SD Card Fatfs Error!");
delay_ms(200);
LCD_Fill(30,150,240,150+16,WHITE); //清除显示
delay_ms(200);
LED0_Toggle;//DS0闪烁
}
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowString(30,150,200,16,16,"FATFS OK!");
LCD_ShowString(30,170,200,16,16,"SD Total Size: MB");
LCD_ShowString(30,190,200,16,16,"SD Free Size: MB");
LCD_ShowNum(30+8*14,170,total>>10,5,16); //显示SD卡总容量 MB
LCD_ShowNum(30+8*14,190,free>>10,5,16); //显示SD卡剩余容量 MB
// j=0;
while(1)
{
ADC_Vol =(float) ADC_ConvertedValue/4096*(float)3.3; // 读取转换的AD值
printf("\r\n The current AD value = %d\n \r\n", ADC_ConvertedValue);
printf("\r\n The current AD value = %f V \r\n",ADC_Vol);
Delay(0x8fffff);
sprintf(dataTemp, "%.3f \r\n",ADC_Vol); // 将 ADC_Vol 以字符串的形式,写入到字符串数组dataTemp中
res = f_open(&fdst,"0:/Data4.txt", FA_WRITE | FA_OPEN_ALWAYS);//以写和追加的方式打开文件
if ( res == FR_OK )
{
f_lseek(&fdst, f_size(&fdst)); //将文件指针移动到文件末尾
res = f_write(&fdst, &dataTemp, sizeof(dataTemp), &bw); // 将缓冲区的数据写到文件中,将字符串数组dataTemp写入SD卡
printf( "\r\n 数据写入成功 \n" );
f_close(&fdst); //关闭文件
}
t++;
delay_ms(200);
LED0_Toggle;
}
}
|
|