【iCore1S 双核心板_ARM】例程十四:FATFS实验——读写文件
实验现象:

核心代码:
int main(void)
{ /* USER CODE BEGIN 1 */
int i;
int j;
FIL file;
FATFS fatfs; //Âß¼Çý¶¯Æ÷µÄ¹¤×÷Çø
static FRESULT res; //FRESULTº¯Êý¹«¹²½á¹û´úÂë
unsigned char write_buffer[]; //дÎļþ»º³åÇø
unsigned char read_buffer[]; //¶ÁÎļþ»º³åÇø
unsigned int counter; /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init(); /* Configure the system clock */
SystemClock_Config(); /* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_SDIO_SD_Init();
MX_FATFS_Init();
MX_USART1_UART_Init();
SystemClock_Config(); /* USER CODE BEGIN 2 */
usart1.printf("\x0c"); //ÇåÆÁ
usart1.printf("\033[1;32;40m"); //½«×ÖÌåÉèÖóÉÂÌÉ«
usart1.printf("\r\n\r\nhello! I am iCore1S!\r\n\r\n\r\n"); HAL_Delay();
res = f_mount(&fatfs,(TCHAR const*)SDPath,); //¹ÒÔØSD¿¨
if(res != RES_OK){
usart1.printf("f_mount error!\r\n");
while(){
HAL_Delay();
LED_RED_TOGGLE;
}
}
else{
usart1.printf("f_mount successful!\r\n");
}
res = f_open(&file,"0:/test.txt",FA_READ | FA_WRITE | FA_OPEN_ALWAYS); //´ò¿ªÇý¶¯Æ÷0ÉϵÄÔ´Îļþ
if(res != RES_OK){
usart1.printf("f_open error!\r\n");
while(){
HAL_Delay();
LED_RED_TOGGLE;
}
}else{
usart1.printf("f_open successful!\r\n");
} res = f_lseek(&file,); //ÒÆ¶¯Ð´Ö¸Õëµ½ÎļþÊ×
if(res != RES_OK){
usart1.printf("f_lseek error!\r\n");
while(){
HAL_Delay();
LED_RED_TOGGLE;
}
}else{
usart1.printf("f_lseek successful!\r\n");
} for(i = ;i < ;i++){
write_buffer[i] = i % ;
}
res = f_write(&file,write_buffer,sizeof(write_buffer),&counter); //½«»º³åÆ÷ÖеÄÄÚÈÝдÈëÔ´Îļþ
if(res != RES_OK || counter != ){
usart1.printf("f_write error!\r\n");
while(){
HAL_Delay();
LED_RED_TOGGLE;
}
}else{
usart1.printf("f_write successful!\r\n");
} res = f_lseek(&file,); //ÒÆ¶¯¶ÁÖ¸Õëµ½ÎļþÊ×
if(res != RES_OK){
usart1.printf("f_lseek error!\r\n");
while(){
HAL_Delay();
LED_RED_TOGGLE;
}
}else{
usart1.printf("f_lseek successful!\r\n");
} res = f_read(&file,read_buffer,sizeof(read_buffer),&counter);
if(res != RES_OK || counter != ){
usart1.printf("f_read error!\r\n");
while(){
HAL_Delay();
LED_RED_TOGGLE;
}
}else{
usart1.printf("f_read successful!\r\n");
}
f_close(&file); //¹Ø±ÕÔ´Îļþ usart1.printf("read data:\r\n");
for(i = ;i < ;i++){
for(j = ; j < ; j ++)
usart1.printf(" %02X",read_buffer[i*+j]);
usart1.printf("\r\n");
} /* USER CODE END 2 */ /* Infinite loop */
/* USER CODE BEGIN WHILE */
while ()
{
/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */
HAL_Delay();
LED_GREEN_TOGGLE;
}
/* USER CODE END 3 */ }
源代码下载链接:
链接:http://pan.baidu.com/s/1c2rkKuc 密码:k4e9

【iCore1S 双核心板_ARM】例程十四:FATFS实验——读写文件的更多相关文章
- 【iCore3 双核心板】例程十四:FATFS实验——文件操作
实验指导书及代码包下载: http://pan.baidu.com/s/1dEpechF iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 【iCore1S 双核心板_ARM】例程五:IWDG看门狗实验——复位ARM
实验原理: STM32内部包含独立看门狗,通过看门狗可以监控程序运行,程序错误 时,未在规定时间喂狗,自动复位ARM.本实验通过按键按下,停止喂狗, 制造程序运行 错误,从而产生复位 . 实验现象: ...
- 【iCore1S 双核心板_ARM】例程六:WWDG看门狗实验——复位ARM
实验原理: STM32内部包含窗口看门狗,通过看门狗可以监控程序运行,程序错误 时,未在规定时间喂狗,自动复位ARM.本实验通过按键按下,停止喂狗, 制造程序运行 错误,从而产生复位 . 实验现象: ...
- 【iCore1S 双核心板_ARM】例程七:通用定时器实验——定时点亮LED
实验原理: 通过STM32的三个GPIO口来驱动LED灯的三个通道:设定GPIO为推挽 输出模式,采用灌电流的方式与LED连接,输出高电平LED灭,输出低电平 LED亮,通过通用定时器TIM3实现50 ...
- 【iCore1S 双核心板_ARM】例程八:ADC实验——电源监控
实验原理: STM32内部集成三个12位ADC,iCore1S的所有电源经过 电阻分压或者直接接入STM32的ADC的输出通道内,输入电流 经过高端电流检测芯片ZXCT1009F输入到ADC的输入通道 ...
- 【iCore1S 双核心板_ARM】例程九:DAC实验——输出直流电压
实验原理: STM32内部集成12位DAC,可以配置成12位或8位,DAC具有两个独立转换通道, 在双DAC模式下,DA转换可被配置成独立模式或工作模式,iCore1S中DAC参考电压为 2.5V.本 ...
- 【iCore1S 双核心板_ARM】例程十五:USB_HID实验——双向数据传输
实验方法: 1.USB_HID协议免驱动,此例程不需要驱. 2.将跳线冒跳至USB_OTG,通过Micro USB 线将iCore1S USB-OTG接口与电脑相连. 3.打开上位机软件usb_hid ...
- 【iCore1S 双核心板_ARM】例程二十:UART_IAP_ARM实验——更新升级STM32
实验现象及操作说明: 1.本例程共有两个代码包,APP和IAP,IAP程序功能实现将APP程序升级至STM32中. 2.直接上电或烧写程序将执行升级的APP应用程序. BIN升级文件产生方法: 1.编 ...
- 【iCore1S 双核心板_ARM】例程十九:SD_IAP_ARM实验——更新升级STM32
实验现象及操作说明: 1.本例程共有两个代码包,APP和IAP,IAP程序功能实现将APP程序升级至STM32中. 2.直接上电或烧写程序将执行升级的APP应用程序. 3.按下按键上电或写程序将进行升 ...
随机推荐
- npm包的更新说明,你还敢不看吗
npm包的更新说明,你还敢不看吗 前言 平时工作少不了依赖一些第三方的npm包,站在各位大牛的肩膀上来更好的写bug,此外还可以学习各位大佬们的各种设计思路和优雅实现.不过npm包虽好,但使用之前也要 ...
- MySQL基础之数据类型和运算符
早些年学习MySQL的笔记,发在博客园上,以便后续回顾学习: 1. 数据类型为int(11),注意到后面的数字11,这表示的是该数据类型指定的显示宽度,指定能够显示的数值中数字的个数.其他数据类型也可 ...
- (原创)PouchDB 图片本地存储(web离线应用)
/* * 参数 * db: 已建或未建数据库 * pouchId: 数据库唯一的主键_id * src: 图片img的DOM对象 * bg: 判断是否是背景图 * */ function addTod ...
- go语言学习-函数
函数声明 函数声明包括函数名,形参列表,返回值列表(可选),函数体组成 func test(parameters) (returns) { // ... } 其中 parameters 就是函数的形参 ...
- 基于URL的高层次Java网络编程
一致资源定位器URL URL(Uniform Resource Locator)是一致资源定位器的简称,它表示Internet上某一资源的地址.通过URL我们可以访问Internet上的各种网络资源, ...
- emlog编辑器探寻之旅
本文同步于我的个人博客 emlog编辑器探寻之旅 一直想要寻找一个好用的emlog文本编辑器,寻觅了很久,从默认的KindEditor编辑器开始,用了几天就感觉特别难用,很多需求根本满足不了.后来想要 ...
- Codeforces.700E.Cool Slogans(后缀自动机 线段树合并 DP)
题目链接 \(Description\) 给定一个字符串\(s[1]\).一个字符串序列\(s[\ ]\)满足\(s[i]\)至少在\(s[i-1]\)中出现过两次(\(i\geq 2\)).求最大的 ...
- 潭州课堂25班:Ph201805201 WEB 之 页面编写 第四课 登录注册 (课堂笔记)
index.html 首页 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- 2016年3月10日Android实习日记
待解决问题: *1:内部ScrollView与外部手势事件滑动冲突问题. *2:Linearlayout+View+LinearLayout横向排列,这其中两个LinearLayout内部各有3个竖向 ...
- oracle中的decode的使用(转)
地址:http://www.cnblogs.com/juddhu/archive/2012/03/07/2383101.html 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值 ...