原创 STM32 GPIO 初始化函数,非使用STM32库方式。

2008-8-26 15:11 5757 7 7 分类: MCU/ 嵌入式

//=========================================================================
//         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;  
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条