你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32F750外设在Linux系统下的操作

[复制链接]
STMCU小助手 发布时间:2022-4-7 18:32
有很多朋友对在Linux下使用STM32外设很感兴趣,今天我简单介绍一下如何使用Linux命令操作外设。
7 j% C3 b" C) s在Linux下各种设备都被抽象成文件,对设备的操作控制转化成对相应文件的读写操作。STM32F750 linux也是这样的,下面举几个例子希望对STM32 linux感兴趣的朋友起到抛砖引玉的作用。4 F& O5 |- a- I$ K' J
. A& t& E; Z: o! I7 d6 v
在linux控制台终端可以使用cat命令读取显示文件,echo命令将数据写入文件。
9 ~3 m+ B' f* M: _
) `+ W- T+ o+ U' j1 ^- G1.GPIO
$ L& }3 s* C% b' _! \9 I6 k8 H( {, O6 L5 P5 b
在F750板子上提供了一个用户按键和一个用户LED,通过对GPIO的操作就可以读取按键、开关LED了。) ]: M% U+ ]/ ~2 e! C
LED(PE3)
% p' ~; q" j% I5 |/ # echo 67 > /sys/class/gpio/export            // PE3对应的linux系统gpio号(16*4+3=67),设置成功后会在/sys/class/gpio路径下生成一个名为gpio67的目录
  Y4 G% ~6 q. }4 T2 x4 e0 g+ f/ # echo out > /sys/class/gpio/gpio67/direction        // 设置为PE3输出
) \8 P1 T6 e' L% \% q- x8 |/ # echo 1 > /sys/class/gpio/gpio67/value        // 点亮LED& A8 w) M. B+ c, `. K7 H3 W# ^% N) f
/ # echo 0 > /sys/class/gpio/gpio67/value        // 关闭LED1 ]- y) b5 }% \5 T. O, U3 o

7 x: U, S8 k2 O9 W4 v5 x按键(PB5)
, M8 ~) k/ N7 G& M( \8 t/ # echo 21 > /sys/class/gpio/export            // PB5对应的linux系统gpio号(16*1+5=21)0 z& W" X2 {! f3 m) L7 t1 j; Z
/ # echo in > /sys/class/gpio/gpio21/direction        // 设置为输入: I! N) \: B  }7 ^( T
/ # cat /sys/class/gpio/gpio21/value            // 读取按键值,如果按下按键,返回0;松开按键,返回1
. I1 ^/ T2 j+ M' O# E& i& |0 E9 q1 p* x- l1 ^& |
2.PWM输出(PB4, TIM3 CH1)
: v* y" x. c5 z% s! c9 M/ # echo 0 > /sys/class/pwm/pwmchip0/export        // 申请pwm0设备! j& t  i* y' {
/ # echo 10000000 > /sys/class/pwm/pwmchip0/pwm0/period // 设置PWM周期为10ms
* v8 h7 P: W8 P/ # echo 5000000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle // 设置PWM占空比5ms
9 u  n  Q" C: F7 ~* J/ # echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable        // 使能PWM
) R: d% J' G; I5 k" d* L! T# f/ # echo 0 > /sys/class/pwm/pwmchip0/pwm0/enable        // 关闭PWM
" j  b8 W& t" D/ # echo 0 > /sys/class/pwm/pwmchip0/unexport           // 释放PWM0设备资源! {8 `6 `/ m0 T& a& d) [; W

" [; C' Y% l3 k0 [0 \+ `3.读取STM32 ADC电压值(PA0, ADC1_IN0)
: x% ]! U; L8 i/ X/ # cat /sys/bus/iio/devices/iio\:device0/in_voltage0_in0_raw // 返回0-4095(STM32 ADC分辨率12位)的十进制数
7 ~; d; Z. q9 W/ E8 {. A& D7 o) C/ # cat /sys/bus/iio/devices/iio\:device0/in_voltage_scale    // 返回一个浮点数,raw × scale = 实际检测电压值(单位:毫伏)4 J, [7 ^  C( ?0 Z

4 ]$ U  s3 a4 h% }) C4.控制STM32 DAC输出电压(PA5,DAC_OUT2)
: D5 n& {8 ^6 |/ # echo 4095 > /dev/dac1                // 指定PA5引脚的输出电压值(10进制,0-4095,对应电压值0-3.3V)' G. T' x* [0 C/ F% R6 r8 l
: p( W" E: E" C
- G! r. i" z( m% i, g8 ^
5.读取BMP085传感器气压、温度值- Q; a1 E6 C* s4 Q
/ # cat /sys/bus/i2c/devices/3-0077/pressure0_input     // 返回大气压值(单位:帕); t( H$ M) s/ q3 M( R* X) {
/ # cat /sys/bus/i2c/devices/3-0077/temp0_input         // 返回温度值(单位:0.1℃)3 p" b& T2 u* d; R2 c; [

  n) S/ b! g6 o5 S( W1 z
, l7 _; P! Y. \2 l- k' z; \$ V6.读取Si7021传感器湿度、温度值
1 Q, ~: `2 A' l  J# C4 y/ # cat /sys/bus/i2c/devices/3-0040/iio\:device1/in_humidityrelative_raw        // 返回湿度原始数据(换算公式见Si7021数据手册)
" U; b( |" j) L8 ?/ # cat /sys/bus/i2c/devices/3-0040/iio\:device1/in_temp_raw                    // 返回温度原始数据(换算公式见Si7021数据手册)
, @/ b5 O  _5 u; D8 e6 b- R% p+ H! Y: d, _
" G" J4 p" a' P6 G; i0 O

3 X& R2 [  Y5 i( g$ `- w: Y$ a以上只是介绍了使用命令行如何访问F750板载外设,同样的方法也可以写成应用程序(打开,读写相应设备文件即可)或者将上面这些命令写入shell脚本调用。; R% P1 g: D% g) f/ V* B

( W( ]+ Z; H3 e6 r- C! A4 K1 }  e( k9 Q- }0 p  Y; C* U+ X
赞 收藏 评论0 发布时间:2022-4-7 18:32

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版