一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 4086|回复: 11

[STM8/STM32] STM32库编程疑问

[复制链接]
发表于 2015-11-6 13:36 来自手机 | 显示全部楼层 |阅读模式
假设,我用stm32的时候,需要用OLED作为显示器件。使用STM32的SPI1与OLED连接。而OLED功能函数我都放在oled.c中。问题来了,oled.c要怎样才能使用在main.c中声明和初始化的SPI1的句柄hspi1?
发表于 2015-11-6 13:42 | 显示全部楼层
外部函数定义啊
回复

使用道具 举报

 楼主| 发表于 2015-11-6 13:46 来自手机 | 显示全部楼层
luckroll 发表于 2015-11-6 13:42static/image/common/back.gif
外部函数定义啊...

main.c中定义外部函数?
回复

使用道具 举报

发表于 2015-11-6 14:06 | 显示全部楼层
句柄这个词引用的好,高大上
回复

使用道具 举报

发表于 2015-11-6 15:24 | 显示全部楼层
chjj0 发表于 2015-11-6 13:46
main.c中定义外部函数?

开放 main 的权限,但是不建议这样做,越权了
可以通过函数来操作变量,就是效率会低一点,但是好管理

回复

使用道具 举报

发表于 2015-11-6 15:26 | 显示全部楼层
句柄?很好寄怎么在单片机里用句柄。。。。
回复

使用道具 举报

发表于 2015-11-6 15:53 | 显示全部楼层
楼主肯定是先玩上位机的 然后现在想折腾单片机 所以才会有句柄的说法

言归正传:在oled.c里面这样定义 比如:  extern void SpiInit(unsigned char Mode) ;这样就可以调用了
回复

使用道具 举报

发表于 2015-11-6 16:04 | 显示全部楼层
既然你的OLED是接在硬件SPI1上。
那SPI的初始化,读,写应该和 OLED.c 里的函数冲突啊。

23432.png

我以前写的STM8电子书工程。
hard_spi.c 里面是配置硬件SPI
spi_sd.c     调用hard_spi.c对SD卡初始化,读写
spi_flash.c  调用hard_spi.c对25XXX 初始化,读写.
回复

使用道具 举报

发表于 2015-11-6 16:29 | 显示全部楼层
如果 hspi1 是main.c 中的全局变量而且没有 static 修饰, 在oled.c里使用 hspi1 变量之前加入语句 "extern HSPI hspi1;" 声明一下就可以使用了,放在 oled.h 里声明也可以(这里假设hspi1的数据类型是HSPI)
如果 hspi1 是main.c的局部变量,可以作为参数传递给 oled.c 中要使用hspi1的函数
回复

使用道具 举报

 楼主| 发表于 2015-11-6 19:54 来自手机 | 显示全部楼层
官方文档真的是用handler这个词的。但我确实没去百度中文译法,想当然的用了句柄这词
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2026-1-31 05:28 , Processed in 0.034694 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表