stm32f4-sdio/main.c

106 lines
1.9 KiB
C

/*
* main.c
*
* Created on: Apr 25, 2015
* Author: mari
*/
#include <stm32f4xx.h>
#include <cmsis/arm_math.h>
#include <fatfs/ff.h>
#include <fatfs/diskio.h>
#include <uart/uart.h>
#include <stdio.h>
#include <stdint.h>
#define OUTPUT(pin) (0x01 << (pin * 2))
FATFS SDfs;
FIL file;
DIR root;
volatile int w;
volatile uint32_t sdio_wait;
int initreq = 0xFF;
//const char *write_string = "This is a write test. Okay... Writing seems to work. Let's close the file\n";
char buff[8192*6];
int main()
{
int i;
char *name;
FILINFO fno;
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
__DSB();
GPIOA->MODER |= OUTPUT(6) | OUTPUT(7);
GPIOA->ODR |= (1<<7);
SysTick_Config(8*1680000);
// f_mount(&SDfs, "0:/", 1);
w = 0;
initUART();
setvbuf(stdout, NULL, _IONBF, 0);
//while(w<10);
initreq = f_mount(&SDfs, "0:/", 1);
while(initreq);
for (i = 0; i < 8192*6; i++)
buff[i] = 'A';
initreq = f_open(&file, "foo.txt", FA_OPEN_APPEND | FA_WRITE);
if (initreq == FR_OK) {
for (i = 0; i < 100; i++) {
initreq = f_write(&file, buff, 8192*6, NULL);
if (initreq) {
initreq++;
}
}
initreq = f_close(&file);
}
//fflush(stdout);
while(1);
}
void HardFault_Handler(uint32_t *stack) {
// unsigned int stacked_r0;
// unsigned int stacked_r1;
// unsigned int stacked_r2;
// unsigned int stacked_r3;
// unsigned int stacked_r12;
// unsigned int stacked_lr;
// unsigned int stacked_pc;
// unsigned int stacked_psr;
//
// stacked_r0 = stack[0];
// stacked_r1 = stack[1];
// stacked_r2 = stack[2];
// stacked_r3 = stack[3];
//
// stacked_r12 = stack[4];
// stacked_lr = stack[5];
// stacked_pc = stack[6];
// stacked_psr = stack[7];
GPIOA->MODER |= OUTPUT(6) | OUTPUT(7);
GPIOA->ODR |= (1<<6) | (1<<7);
while(1);
}
void SysTick_Handler()
{
GPIOA->ODR ^= (1<<6)|(1<<7);
w++;
sdio_wait++;
}
void sdio_wait_ms(unsigned int i) {
sdio_wait = 0;
while(sdio_wait<i);
}