您的位置:控制工程论坛网论坛 » 教程与手册 » STM32初学者笔记(2) 一步步建立自己的STM32函数

常青树

常青树   |   当前状态:在线

总积分:1421  2025年可用积分:0

注册时间: 2008-09-28

最后登录时间: 2012-05-30

空间 发短消息加为好友

STM32初学者笔记(2) 一步步建立自己的STM32函数

常青树  发表于 2008/10/16 7:18:57      850 查看 0 回复  [上一主题]  [下一主题]

手机阅读

下面是万利开发板 LCD DEMO 例子中的函数,改后初学者可以对照学习一下。


//=========================================================================
//     原函数名称: GPIO_Configuration(void)
//=========================================================================
void STM32_GPIO_Configuration(void)
{
    
      /* Configure PC.04 -- PC.11 as Output push-pull */
    
    STM32_Gpioc_Regs->crl.bit.CNF4=Output_push_pull;   // PC.04 推挽输出
    STM32_Gpioc_Regs->crl.bit.MODE4=Output_Mode_50mhz; // PC.04 输出模式,最大速度50MHz

    STM32_Gpioc_Regs->crl.bit.CNF5=Output_push_pull;   // PC.05 推挽输出
    STM32_Gpioc_Regs->crl.bit.MODE5=Output_Mode_50mhz; // PC.05 输出模式,最大速度50MHz

    STM32_Gpioc_Regs->crl.bit.CNF6=Output_push_pull;
    STM32_Gpioc_Regs->crl.bit.MODE6=Output_Mode_50mhz;

    STM32_Gpioc_Regs->crl.bit.CNF7=Output_push_pull;
    STM32_Gpioc_Regs->crl.bit.MODE7=Output_Mode_50mhz;
        
    STM32_Gpioc_Regs->crh.bit.CNF8=Output_push_pull;
    STM32_Gpioc_Regs->crh.bit.MODE8=Output_Mode_50mhz;
    
    STM32_Gpioc_Regs->crh.bit.CNF9=Output_push_pull;
    STM32_Gpioc_Regs->crh.bit.MODE9=Output_Mode_50mhz;

    STM32_Gpioc_Regs->crh.bit.CNF10=Output_push_pull;
    STM32_Gpioc_Regs->crh.bit.MODE10=Output_Mode_50mhz;

    STM32_Gpioc_Regs->crh.bit.CNF11=Output_push_pull;
    STM32_Gpioc_Regs->crh.bit.MODE11=Output_Mode_50mhz;

      /* Configure PD.03, PC.04, PC.11 -- PC.15 as input floating */
    STM32_Gpiod_Regs->crl.bit.CNF3=Input_floating;    // PD.03 浮空输入
    STM32_Gpiod_Regs->crl.bit.MODE3=Input_Mode;    // PD.03 输入模式

    STM32_Gpioc_Regs->crl.bit.CNF4=Input_floating;    // PC.04 浮空输入
    STM32_Gpioc_Regs->crl.bit.MODE4=Input_Mode;    // PC.04 输入模式

    STM32_Gpioc_Regs->crh.bit.CNF11=Input_floating;
    STM32_Gpioc_Regs->crh.bit.MODE11=Input_Mode;

    STM32_Gpioc_Regs->crh.bit.CNF12=Input_floating;
    STM32_Gpioc_Regs->crh.bit.MODE12=Input_Mode;

    STM32_Gpioc_Regs->crh.bit.CNF13=Input_floating;
    STM32_Gpioc_Regs->crh.bit.MODE13=Input_Mode;

    STM32_Gpioc_Regs->crh.bit.CNF14=Input_floating;
    STM32_Gpioc_Regs->crh.bit.MODE14=Input_Mode;

    STM32_Gpioc_Regs->crh.bit.CNF15=Input_floating;
    STM32_Gpioc_Regs->crh.bit.MODE15=Input_Mode;


     /* Configure CAN pin: RX  pd0 */
    STM32_Gpiod_Regs->crl.bit.CNF0=Input_pull_up;
    STM32_Gpiod_Regs->crl.bit.MODE0=Input_Mode;
    
      /* Configure CAN pin: TX pd1 */
    STM32_Gpiod_Regs->crl.bit.CNF1=Output_Af_push_pull;
    STM32_Gpiod_Regs->crl.bit.MODE1=Output_Mode_2mhz;


      /* CAN pin remap to PD0/PD1 */
      // 11:CANRX映像到PD0,CANTX映像到PD1(只适用于100脚的封装)
    STM32_Afio_Regs->mapr.bit.CAN_REMAP=3;
    
      /* Configure PE.00 -- PE.15 as Output push-pull 50mhz */

    STM32_Gpioe_Regs->crl.all=0x33333333;
    STM32_Gpioe_Regs->crh.all=0x33333333;        
}

1楼 0 0 回复