-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrp2040_w25qxx.c
67 lines (56 loc) · 1.49 KB
/
rp2040_w25qxx.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "hardware/sync.h"
#include "pico/stdlib.h"
#include "w25qxx_Demo.h"
#include <stdio.h>
volatile uint32_t uwTick;
bool repeating_timer_callback(repeating_timer_t *t)
{
++uwTick;
return true;
}
static void IO_Init(void)
{
/* USER LED */
gpio_init(PICO_DEFAULT_LED_PIN);
gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT);
gpio_put(PICO_DEFAULT_LED_PIN, true);
}
static void SPI0_Init(uint baudrate)
{
/* RX, TX, SCK */
spi_init(spi_default, baudrate);
gpio_set_function(PICO_DEFAULT_SPI_RX_PIN, GPIO_FUNC_SPI);
gpio_set_function(PICO_DEFAULT_SPI_TX_PIN, GPIO_FUNC_SPI);
gpio_set_function(PICO_DEFAULT_SPI_SCK_PIN, GPIO_FUNC_SPI);
/* CS0 */
gpio_init(PICO_DEFAULT_SPI_CSN_PIN);
gpio_put(PICO_DEFAULT_SPI_CSN_PIN, 1);
gpio_set_dir(PICO_DEFAULT_SPI_CSN_PIN, GPIO_OUT);
}
/**
* @brief This function is executed in case of error occurrence
* @retval None
*/
void Error_Handler(void)
{
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
save_and_disable_interrupts();
while (1) {}
/* USER CODE END Error_Handler_Debug */
}
void main()
{
stdio_init_all();
IO_Init();
SPI0_Init(1e5);
/* Timer 1kHz */
repeating_timer_t timer;
add_repeating_timer_us(1000, repeating_timer_callback, NULL, &timer);
while (true)
{
if (w25qxx_Demo(w25qxx_Print))
Error_Handler();
gpio_put(PICO_DEFAULT_LED_PIN, false);
}
}