#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/spi_master.h"
#include "esp_log.h"
#include "driver/gpio.h"
void spi_test_task(void *arg) {
spi_device_handle_t spi;
spi_bus_config_t buscfg = {
.miso_io_num = 11,
.mosi_io_num = 14,
.sclk_io_num = 13,
.quadwp_io_num = -1,
.quadhd_io_num = -1,
};
spi_device_interface_config_t devcfg = {
.mode = 3,
.clock_speed_hz = 100 * 1000,
.spics_io_num = -1, // 手动 CS
.queue_size = 1,
};
spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_DISABLED);
spi_bus_add_device(SPI2_HOST, &devcfg, &spi);
uint8_t tx_data = 0xAA;
uint8_t rx_data = 0;
spi_transaction_t t = {
.length = 8,
.tx_buffer = &tx_data,
.rx_buffer = &rx_data,
};
while (1) {
gpio_set_level(12, 0); // 拉低 CS
spi_device_polling_transmit(spi, &t);
gpio_set_level(12, 1); // 拉高 CS
ESP_LOGI("SPI_TEST", "Sent 0xAA");
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
void app_main() {
gpio_set_direction(12, GPIO_MODE_OUTPUT);
gpio_set_level(12, 1);
xTaskCreate(spi_test_task, "spi_test", 2048, NULL, 10, NULL);
}
在运行这个代码时不断崩溃
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/spi_master.h"
#include "esp_log.h"
#include "driver/gpio.h"
void spi_test_task(void *arg) {
spi_device_handle_t spi;
spi_bus_config_t buscfg = {
.miso_io_num = 11,
.mosi_io_num = 14,
.sclk_io_num = 13,
.quadwp_io_num = -1,
.quadhd_io_num = -1,
};
spi_device_interface_config_t devcfg = {
.mode = 3,
.clock_speed_hz = 100 * 1000,
.spics_io_num = -1, // 手动 CS
.queue_size = 1,
};
spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_DISABLED);
spi_bus_add_device(SPI2_HOST, &devcfg, &spi);
uint8_t tx_data = 0xAA;
uint8_t rx_data = 0;
spi_transaction_t t = {
.length = 8,
.tx_buffer = &tx_data,
.rx_buffer = &rx_data,
};
while (1) {
gpio_set_level(12, 0); // 拉低 CS
spi_device_polling_transmit(spi, &t);
gpio_set_level(12, 1); // 拉高 CS
ESP_LOGI("SPI_TEST", "Sent 0xAA");
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
void app_main() {
gpio_set_direction(12, GPIO_MODE_OUTPUT);
gpio_set_level(12, 1);
xTaskCreate(spi_test_task, "spi_test", 4096, NULL, 10, NULL);
}
在运行这个代码时不再崩溃,原因是什么
最新发布