嵌入式STM32程序編寫基本流程(LED流水燈)


LED流水燈程序初始化流程

[cpp] view plain copy

  1. //1.定義結構體變量  
  2. GPIO_InitTypeDef GPIO_InitStructure;  
  3. //2.開啟GPIOC的外部時鍾,不同的外設開啟不同的時鍾,IO口復用時兩個時鍾都要開啟。stmf10x_rcc.h  
  4. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);  
  5. //3.設置要控制的GPIO管腳  
  6. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;  
  7. //4.設置管腳模式,推挽輸出   
  8. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;  
  9. //5.設置GPIOC的引腳速度為50MHz  
  10. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;  
  11. //6.調用庫函數初始化GPIOC,初始化IO口   
  12. GPIO_Init(GPIOC,&GPIO_InitStructure);   
  13. //7.關閉所有LED等燈,GPIO_ResetBits(,);GPIO_SetBits(,);置位和清0函數  
  14. GPIO_SetBits(GPIOC,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5);  

寄存器方式

[cpp] view plain copy

  1. GPIO_TypeDef * GPIOx;    
  2. GPI0x=GPIOA;    
  3. //開啟GPIOA外設時鍾  
  4. GPIOx->APB2ENR|=1<<2;   
  5. //配置GPIOA.3 4 5為推挽輸出50MHZ   
  6. GPIOx->CRL|=0X03<<12|0X03<<16|0X03<<20;    
  7. //GPIOA.3 4 5輸出0xff。  
  8. GPIOx->ODR=0XFF;    

 

LED.H

[cpp] view plain copy

  1. #ifndef __LED_H    
  2. #define __LED_H    
  3. #include "stm32f10x.h"    
  4. #define LED1(a) if(a) \    
  5. GPIO_SetBits(GPIOC,GPIO_Pin_3);\    
  6. else    \    
  7. GPIO_ResetBits(GPIOC,GPIO_Pin_3);    
  8. #define LED2(a) if(a) \    
  9. GPIO_SetBits(GPIOC,GPIO_Pin_4);\    
  10. else    \    
  11. GPIO_ResetBits(GPIOC,GPIO_Pin_4);    
  12. #define LED3(a) if(a) \    
  13. GPIO_SetBits(GPIOC,GPIO_Pin_5);\    
  14. else    \    
  15. GPIO_ResetBits(GPIOC,GPIO_Pin_5);    
  16. void GPIO_Config(void);    
  17. #endif  

 

"\"為行連接符,表示本行與上一行屬於同一代碼行.  

 

端口設置可以使用“sys.h“下的PXout(n)=0/1;PXin(n);來進行設置

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM