STMCU小助手
发布时间:2022-4-7 18:32
|
有很多朋友对在Linux下使用STM32外设很感兴趣,今天我简单介绍一下如何使用Linux命令操作外设。 在Linux下各种设备都被抽象成文件,对设备的操作控制转化成对相应文件的读写操作。STM32F750 linux也是这样的,下面举几个例子希望对STM32 linux感兴趣的朋友起到抛砖引玉的作用。4 F& O5 |- a- I$ K' J . A& t& E; Z: o! I7 d6 v 在linux控制台终端可以使用cat命令读取显示文件,echo命令将数据写入文件。 1.GPIO ! \9 I6 k8 H( {, O6 L5 P5 b 在F750板子上提供了一个用户按键和一个用户LED,通过对GPIO的操作就可以读取按键、开关LED了。) ]: M% U+ ]/ ~2 e! C 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& 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 按键(PB5) / # 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 ' O# E& i& |0 E9 q1 p* x- l1 ^& | 2.PWM输出(PB4, TIM3 CH1) / # echo 0 > /sys/class/pwm/pwmchip0/export // 申请pwm0设备! j& t i* y' { / # 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设备资源! {8 `6 `/ m0 T& a& d) [; W 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 J, [7 ^ C( ?0 Z 4.控制STM32 DAC输出电压(PA5,DAC_OUT2) / # 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; [ 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数据手册) 6 b- R% p+ H! Y: d, _ " G" J4 p" a' P6 G; i0 O 以上只是介绍了使用命令行如何访问F750板载外设,同样的方法也可以写成应用程序(打开,读写相应设备文件即可)或者将上面这些命令写入shell脚本调用。; R% P1 g: D% g) f/ V* B e( k9 Q- }0 p Y; C* U+ X |
基于STM32F767通过cube配置:QSPI接口读写64M PSRAM+flash参考资料...
STM32F746G-DISCO移植lvgl9.0性能基准测试
STM32F745 USART1 Bootloader启动失败排查与解决的流程分析
STM32芯片命名规则
STM32 引脚到底有多少?为什么一个引脚能当好几个用?
入门嵌入式,为什么STM32是“优选起步”?
嵌入式-单片机-STM32 EXTI中断
STM32单片机进行除零运算,为何程序不崩溃?
STM32 LL为什么比HAL高效?
STM32时钟详解
微信公众号
手机版