[原创] STM32F750外设在Linux系统下的操作
816 查看
5 回复
 楼主 | 发布于 2018-12-18 | 只看楼主
分享到:
之前发了“新出的STM32F750成功运行Linux”http://club.digiic.com/Forum/PostDetail/p-8981.html
可能有很多朋友对在Linux下使用STM32外设很感兴趣,今天我简单介绍一下如何使用Linux命令操作外设。

在Linux下各种设备都被抽象成文件,对设备的操作控制转化成对相应文件的读写操作。STM32F750 linux也是这样的,下面举几个例子希望对STM32 linux感兴趣的朋友起到抛砖引玉的作用。
在linux控制台终端可以使用cat命令读取显示文件,echo命令将数据写入文件。

1.GPIO
在F750板子上提供了一个用户按键和一个用户LED,通过对GPIO的操作就可以读取按键、开关LED了。
LED(PE3)
/ # echo 67 > /sys/class/gpio/export            // PE3对应的linux系统gpio号(16*4+3=67),设置成功后会在/sys/class/gpio路径下生成一个名为gpio67的目录
/ # echo out > /sys/class/gpio/gpio67/direction        // 设置为PE3输出
/ # echo 1 > /sys/class/gpio/gpio67/value        // 点亮LED
/ # echo 0 > /sys/class/gpio/gpio67/value        // 关闭LED

按键(PB5)
/ # echo 21 > /sys/class/gpio/export            // PB5对应的linux系统gpio号(16*1+5=21)
/ # echo in > /sys/class/gpio/gpio21/direction        // 设置为输入
/ # cat /sys/class/gpio/gpio21/value            // 读取按键值,如果按下按键,返回0;松开按键,返回1

2.PWM输出(PB4, TIM3 CH1)
/ # echo 0 > /sys/class/pwm/pwmchip0/export        // 申请pwm0设备
/ # echo 10000000 > /sys/class/pwm/pwmchip0/pwm0/period // 设置PWM周期为10ms
/ # echo 5000000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle // 设置PWM占空比5ms
/ # echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable        // 使能PWM
/ # echo 0 > /sys/class/pwm/pwmchip0/pwm0/enable        // 关闭PWM
/ # echo 0 > /sys/class/pwm/pwmchip0/unexport           // 释放PWM0设备资源

3.读取STM32 ADC电压值(PA0, ADC1_IN0)
/ # cat /sys/bus/iio/devices/iio\:device0/in_voltage0_in0_raw // 返回0-4095(STM32 ADC分辨率12位)的十进制数
/ # cat /sys/bus/iio/devices/iio\:device0/in_voltage_scale    // 返回一个浮点数,raw × scale = 实际检测电压值(单位:毫伏)

4.控制STM32 DAC输出电压(PA5,DAC_OUT2)
/ # echo 4095 > /dev/dac1                // 指定PA5引脚的输出电压值(10进制,0-4095,对应电压值0-3.3V)

5.读取BMP085传感器气压、温度值
/ # cat /sys/bus/i2c/devices/3-0077/pressure0_input     // 返回大气压值(单位:帕)
/ # cat /sys/bus/i2c/devices/3-0077/temp0_input         // 返回温度值(单位:0.1℃)

6.读取Si7021传感器湿度、温度值
/ # cat /sys/bus/i2c/devices/3-0040/iio\:device1/in_humidityrelative_raw        // 返回湿度原始数据(换算公式见Si7021数据手册)
/ # cat /sys/bus/i2c/devices/3-0040/iio\:device1/in_temp_raw                    // 返回温度原始数据(换算公式见Si7021数据手册)


以上只是介绍了使用命令行如何访问F750板载外设,同样的方法也可以写成应用程序(打开,读写相应设备文件即可)或者将上面这些命令写入shell脚本调用。






专注于MCU,模块,开发板 efusion.taobao.com

(0 ) (0 )

嵌入式Linux arm

回复 举报

回复于 2018-12-18 沙发

牛人,感谢分享

(0 )
评论 (1) 举报

回复于 2018-12-18 2#

感谢分享!!需要机器人(工业,服务)的设计方案;自动化设备改造(螺丝机,点胶机等)以及个电子相关的新产品研发(微信调控暖手宝温度等)。
(0 )
评论 (0) 举报

回复于 2018-12-23 3#

支持下,谢谢分享!
(0 )
评论 (0) 举报

回复于 2018-12-24 4#

谢谢分享!!!!
(0 )
评论 (0) 举报

回复于 2018-12-31 5#

谢谢分享!!!
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部