Esempio n. 1
0
        if direction in ["OUT", "IN/OUT"]:
            c << OMacro("set_"+name, pname+"OUT |= "+bname)
            c << OMacro("clr_"+name, pname+"OUT &= ~"+bname)
            c << OMacro("toggle_"+name, pname+"OUT ^= "+bname)
            pdir.append(bname)

            c.add(name,
                  pname+"OUT |= "+bname,
                  pname+"OUT &= ~"+bname)

            #sc << OMacro("set_"+name,    "bit_set(\""+name+"\")")
            #sc << OMacro("clr_"+name,    "bit_clr(\""+name+"\")")
            #sc << OMacro("toggle_"+name, "bit_toggle(\""+name+"\")")

        if direction in ["IN", "IN/OUT"]:
            c.add_in(name, "((" + pname + "IN & " + bname + ") == " + bname + ")")

            c.sm.add("PIN_"+name, [pname + "DIR &= ~" + bname + ";",
                                   "if (out)",
                                   "{",
                                   pname + "DIR |= " + bname + ";",
                                   "}"])
        if direction in ["IN/OUT"]:
            c << OMacro("get_"+name, "("+pname+"IN & "+bname+") == "+bname)
            c << OMacro("out_"+name, pname+"DIR |= "+bname)
            c << OMacro("in_"+name,  pname+"DIR &= ~"+bname)
            
    if len(pdir) > 0:
        c.m << pname+"DIR = " + (" + ".join(pdir)) + ";"

write_file_n(PATH+"config", c, spi)
Esempio n. 2
0
        #c.m << "ioInit.GPIO_OType = GPIO_OType_PP;"
        #c.m << "ioInit.GPIO_PuPd = GPIO_PuPd_DOWN;"
        c.m << "ioInit.GPIO_Speed = GPIO_Speed_10MHz;"
        c.m << "GPIO_Init(GPIO"+i+", &ioInit);"
        c.m << ""
        for item, af in paf:
            psource = "GPIO_PinSource"+item[len("GPIO_Pin_"):]
            c.m << "GPIO_PinAFConfig(GPIO"+i+", "+psource+", "+af+");"

pinId = 1
for direction, desc, port, bit in pins:
    name = "PIN_"+desc

    c.add(desc,
          "GPIO"+port+"->BSRR = GPIO_Pin_"+bit,
          "GPIO"+port+"->BRR = GPIO_Pin_"+bit)

    if direction == "IN/OUT":
        c.sm.add(name, ["GPIO"+port+"->MODER &= ~(((uint32_t)0x3) << ("+bit+"*2));",
                        "if (out)",
                        "{",
                        "GPIO"+port+"->MODER |= (((uint32_t)0x1) << ("+bit+"*2));",
                        "}"])
        
    if direction in ["IN", "IN/OUT"]:
        c.add_in(desc, "((GPIO"+port+"->IDR & GPIO_Pin_"+bit+") == GPIO_Pin_"+bit+")")

    pinId += 1

write_file_n(PATH+"config", c, spi)
Esempio n. 3
0
        c.m << "ioInit.Pin = " + (" | ".join(afpins)) + ";"
        c.m << "ioInit.Mode = GPIO_MODE_AF_PP;"
        c.m << "ioInit.Speed = GPIO_SPEED_FREQ_MEDIUM;"
        c.m << "ioInit.Alternate = " + paf[0].af + ";"
        c.m << "HAL_GPIO_Init(GPIO"+paf[0].port+", &ioInit);"
        c.m << ""
#        for pd in paf:
#            c.m << "GPIO_PinAFConfig(GPIO"+pd.port+", GPIO_PinSource"+pd.pin+", "+pd.af+");"

pinId = 1
for pd in pins:
    name = "PIN_"+pd.desc

    c.add(pd.desc,
          pd.reg('BSRR')+"= "+pd.pin_name(),
          pd.reg('BRR')+" = "+pd.pin_name())

    if pd.direction == "IN/OUT":
        c.sm.add(name, [pd.reg('MODER')+" &= ~(((uint32_t)0x3) << ("+pd.pin+"*2));",
                        "if (out)",
                        "{",
                        pd.reg('MODER')+" |= (((uint32_t)0x1) << ("+pd.pin+"*2));",
                        "}"])

    if pd.direction in ["IN", "IN/OUT"]:
        c.add_in(pd.desc, "(("+pd.reg('IDR')+" & "+pd.pin_name()+") == "+pd.pin_name()+")")

    pinId += 1

write_file_n(p.vars['PATH']+"hal", c, spi)