Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
SPI
spi自动初始化程序
发布于 2024-05-11 11:08:33 浏览:273
订阅该版
```c /***** *本文件为通用的SPI初始化BSP使用环境RTT *自动初始化结构体数组表中注册的设备,只修改表即可 *表中有两个回调函数,可根据实际情况添加。下方添加了两个回调函数参考。 *其他线程想使用SPI设备只需要rt_device_find设备返回句柄后即可使用。 **********/ #include
#include
#include
#ifdef BSP_USING_SPI #include "drv_spi.h" typedef struct { const char *spi_name; //挂载的总线名称 const char *spi_dev_name; //挂载的设备名称 uint32_t cs_pin; //CS引脚 rt_uint8_t mode; //模式可使用或的形式 rt_uint8_t data_width; //数据宽度 rt_uint32_t max_hz; //频率 void (*CallBlack1)(uint8_t index);//回调函数 void (*CallBlack2)(uint8_t index);//回调函数 } Spi_struct; static void call_black1_test(uint8_t index);//回调函数参考。 static void call_black2_test(uint8_t index);//回调函数参考。 /*********** SPI结构体数组表根据实际情况更改此表即可 *************/ const Spi_struct spi_struct_par[] = {//按实际情况更改此表数据 //----总线-------设备名------CS引脚--------------模式---------------------------------数据位---频率-------回调函数1-------------回调函数2 {"spi1", "spi10", GET_PIN(C, 4), RT_SPI_MODE_0 | RT_SPI_MSB, 8, 20000 * 1000, call_black1_test, call_black2_test}, {"spi1", "spi11", GET_PIN(B, 1), RT_SPI_MODE_0 | RT_SPI_MSB, 8, 20000 * 1000, call_black1_test, call_black2_test}, {"spi2", "spi20", GET_PIN(D, 9), RT_SPI_MODE_0 | RT_SPI_MSB, 8, 20000 * 1000, call_black1_test, call_black2_test}, {"spi2", "spi21", GET_PIN(D, 12), RT_SPI_MODE_0 | RT_SPI_MSB, 8, 20000 * 1000, call_black1_test, call_black2_test}, {"spi3", "spi30", GET_PIN(D, 3), RT_SPI_MASTER | RT_SPI_MODE_0 | RT_SPI_MSB, 8, 1000 * 1000, call_black1_test, call_black2_test}, }; uint8_t spi_dev_num = sizeof(spi_struct_par)/sizeof(spi_struct_par[0]);//计算表的长度 //回调函数参考。 static void call_black1_test(uint8_t index) { rt_kprintf("init %s device begin.\n",spi_struct_par[index].spi_dev_name); } //回调函数参考。 static void call_black2_test(uint8_t index) { rt_kprintf("init %s device end.\n",spi_struct_par[index].spi_dev_name); } /************************************** 函数名:spi_init 作 用:初始化spi该函数被自动调用 参 数: 返回值: *****************************************/ static int spi_init(void) { struct rt_spi_device *spi_device = RT_NULL;//设备句柄 struct rt_spi_configuration cfg;//模式配置结构体 for(uint8_t i = 0; i < spi_dev_num; i++) { if(spi_struct_par[i].CallBlack1 != RT_NULL) (spi_struct_par[i].CallBlack1)(i);//调用回调函数 rt_pin_mode(spi_struct_par[i].cs_pin, PIN_MODE_OUTPUT); rt_hw_spi_device_attach(spi_struct_par[i].spi_name,spi_struct_par[i].spi_dev_name,spi_struct_par[i].cs_pin); //注册spi1x设备 spi_device = (struct rt_spi_device *)rt_device_find(spi_struct_par[i].spi_dev_name);//查找注册的设备 if (!spi_device) rt_kprintf("spi sample run failed! can't find %s device!\n", spi_struct_par[i].spi_dev_name); else { { //模式设置结构体 cfg.data_width = spi_struct_par[i].data_width; cfg.mode = spi_struct_par[i].mode; cfg.max_hz = spi_struct_par[i].max_hz; rt_spi_configure(spi_device, &cfg); } if(spi_struct_par[i].CallBlack2 != RT_NULL) (*spi_struct_par[i].CallBlack2)(i);//调用回调函数 } } return RT_EOK; } INIT_DEVICE_EXPORT(spi_init);//自动初始化 #endif ```
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
aeniac
这家伙很懒,什么也没写!
文章
6
回答
42
被采纳
1
关注TA
发私信
相关文章
1
BBB的SPI驱动
2
求个SPI上挂两个或多个设备的使用例子
3
SPI设备有个bug
4
spi flash 的fatfs使用一段时间后读写文件出现故障
5
SPI驱动
6
请教rt_spi_configure函数理解
7
SPI FLASH挂载的问题
8
SPI-FLASH 文件系统 SPIFFS
9
求助一个完整的 spi flash 驱动
10
关于同时使用文件系统与SPI FLASH的问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
a1012112796
20
个答案
3
次被采纳
张世争
11
个答案
3
次被采纳
踩姑娘的小蘑菇
7
个答案
3
次被采纳
rv666
9
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
RTT_逍遥
1
篇文章
6
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部