Liunx 下直接操作GPIO来操作PWM

这个是一个关于Edgebroad的GPIO的操作来实现PWM的类。

这个板子主控其实是AMD的FPGA,所以操作方法其实和其他有GPIO的linux板子方法差不多吧(比如树莓派

操作更像是一种写入寄存器的操作,emmmm,写半天还是成了写单片机编程。

但是是在Liunx下面,所以其实都是对文件的操作和读写,所以读写文件的速度其实对代码执行的速度是有很大影响的,而python的sleep函数在这个地方因为使用cpu的主频来计数,所以时间延时并不是很准确,其他办法正在研究(比如用Ctos

暂时没有别的解释,等到暑假之后再写。

import os
import time


def wr(x):
    f = open('/sys/class/gpio/gpio423/value', 'w')
    f.write(str(x))
    f.close()



class edge_pwm():
    def __init__(self,pin) -> None:
        
        pin = pin + 411
        self.pin =pin
       # print(1)
        os.system("echo "+str(pin)+" > /sys/class/gpio/export")
       # print(pin)
        os.system("echo out > /sys/class/gpio/gpio"+str(pin)+"/direction")
      #  print(1)
        
        
    
    def start(self,DutyCycle,Freq):
        self.DutyCycle = DutyCycle
        self.Freq = Freq
        self.flag = True
        self.pwm()
    def pwm(self):
        self.io_control(0)
        
        while True:
            cycle = 1/self.Freq
            high_cycle = cycle * (self.DutyCycle/100)
            low_cycle = cycle - high_cycle
            #print(low_cycle)
            self.io_control(1)
            time.sleep(high_cycle)
            #print(high_cycle)
            self.io_control(0)
            #print(low_cycle)
            time.sleep(low_cycle)
            

    def io_control(self,io):     
        #os.system("echo "+str(io)+" > /sys/class/gpio/gpio"+str(self.pin)+"/value")
       # print(2)
        f = open("/sys/class/gpio/gpio"+str(self.pin)+"/value", 'w')
        f.write(str(io))
        f.close()


    def ChangeDutyCycle(self,DutyCycle):
        self.DutyCycle = DutyCycle
    

if __name__ == "__main__":
    p = edge_pwm(12)
    p.start(8,50)

评论

  1. 上海龙教练
    Windows Edge 114.0.1823.43
    2 年前
    2023-6-15 23:26:44

    qwqpap

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇