本次测试采用的芯片是STM32F103CB
我的开发板如下:
此开发板有8个led,分别为D11,D12,D13,D14,D15,D16,D17,D18。查询核心板的电路图后知道其对应芯片的控制引脚为P0.0,P0.1,P0.2,P0.3,P0.4,P0.5,P0.6,P0.7,P0.8。
现在开始测试点亮D11。主要源代码如下:
1 //main.c 2 #include "pbdata.h" 3 #include "led.h" 4 5 int main(void) 6 { 7 led_init(); 8 led_setBit(); 9 }
1 //pbdata.h 2 #ifndef _pbdata_H 3 #define _pbdata_H 4 5 #include "stm32f10x.h" 6 void delay(u32 nCount); 7 8 #endif
1 //pbdata.c 2 #include "pbdata.h" 3 4 void delay(u32 nCount) 5 { 6 for(;nCount != 0;nCount--); 7 }
1 //led.h 2 #ifndef _LED_H 3 #define _LED_H 4 5 #define GPIO_Pin_x GPIO_Pin_8 6 #define GPIO_LED GPIOB 7 8 void led_init(void); 9 void led_setBit(void); 10 11 #endif
1 //led.c 2 #include "led.h" 3 #include "pbdata.h" 4 5 void led_init(void) 6 { 7 GPIO_InitTypeDef GPIO_InitStructure; 8 9 SystemInit(); /*设置系统时钟*/ 10 11 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; 12 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 13 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 14 15 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);/*打开LED使用的GPIO的时钟使能*/ 16 GPIO_Init(GPIO_LED,&GPIO_InitStructure); 17 } 18 19 void led_setBit(void) 20 { 21 while(1) 22 { 23 GPIO_SetBits(GPIO_LED,GPIO_Pin_x); //set 1 24 delay(6000000); 25 GPIO_ResetBits(GPIO_LED,GPIO_Pin_x); 26 delay(6000000); 27 } 28 }
寄存器版后续更新中...
2014-08-19 01:30:14
原文:http://www.cnblogs.com/lweleven/p/led1.html