【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.按下按键上电或写程序将进行升 ...
随机推荐
- Spark函数式编程进阶
函数式编程进阶 1.函数和变量一样作为Scala语言的一等公民,函数可以直接复制给变量: 2.函数更长用的方式是匿名函数,定义的时候只需要说明输入参数的类型和函数体即可,不需要名称,但是匿名函数赋值给 ...
- FutureTask实现超时任务
最近主要在弄一些c/s的东西,以及对接一些外部的接口. 记下一些感觉有用的东西吧. java在1.5之后有Callable和Future可以获得任务执行完毕后的结果 结合ExecutorService ...
- JAVA编程:字符串转为数字求和
程序从命令行接入数字,求和,如果接入的是字符串的解决办法 设计思想: 首先定义一个double类型的一维数组,然后在定义一个double型的变量sum,并赋值为0,用if循环判断从命令行是否有参数输入 ...
- iOS html5使用缓存并及时更新方案总结
最近一段时间研究了一下H5在iOS移动端表现时使用缓存并可及时更新方案,总结如下: 一.使用Webview自带缓存机制 当我们使用webview加载html资源时的,本质上就是一个向服务器索取资源的h ...
- BZOJ.1927.[SDOI2010]星际竞速(无源汇上下界费用流SPFA /最小路径覆盖)
题目链接 上下界费用流: /* 每个点i恰好(最少+最多)经过一次->拆点(最多)+限制流量下界(i,i',[1,1],0)(最少) 然后无源汇可行流 不需要源汇. 注: SS只会连i',求SS ...
- 利用dockerfile定制镜像
利用dockerfile定制镜像 镜像的定制就是定制每一层所添加的配置.文件.如果可以吧每一层修改.安装.构建.操作的命令都写入到一个脚本,用脚本来构建.定制镜像,这个脚本就是dockerfile. ...
- C# try catch finally简单介绍和应用
今天看代码书的时候,有用到try--catch--finally,然后就查了下具体的注意事项和应用. 简单来说就是: try { //有可能出错误的代码或者代码片段 } catch{ // ...
- SpringBoot在自定义类中调用service层等Spring其他层
解决方案: 1.上代码 @Component public class ServerHandler extends IoHandlerAdapter { @Autowired protected He ...
- ScrollView不能包含多个子项,ScrollView can host only one direct child
http://debuglog.iteye.com/blog/1441828 ScrollView不能包含多个子项,ScrollView can host only one direct child ...
- float:浮点型double:双精度实型decimal:数字型单精度浮点数(Single)双精度浮点数(double)
单精度浮点数(Single) 双精度浮点数(double) Decimal为SQL Server.MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部分以及小 ...