从今天开始准备15届蓝桥杯
第一天点亮LED,因为之前学过标准库,所以算有一点点基础。
STM32cubemx+keil之前已经安装过了,所以第一天直接点亮LED。
写给自己看的,所以就不写没用的细节。
1、配置为外部时钟源
2、配置时钟树,根据蓝桥杯官方提供的历程来
3、配置LED 相关IO口
4、生成MDK文件,新建User文件夹,新建LED.C/LED.H文件
5、开写代码(放出核心代码)
宏定义
#define uchar unsigned char
#define uint unsigned int
//LED.c
void LED_Drive (uchar LED_W)
{
HAL_GPIO_WritePin (GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
for (uchar i=0;i<8;i++)
{
HAL_GPIO_WritePin (GPIOC,LED_W<<8&(GPIO_PIN_8<<i),GPIO_PIN_RESET);
}
HAL_GPIO_WritePin (GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_WritePin (GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}
//main.c
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
LED_Drive(0xaa);
HAL_Delay(1000);
LED_Drive(0x55);
HAL_Delay(1000);
}
/* USER CODE END 3 */
}
然后for循环的逻辑懒得解释,放核心代码,这是HAL库对GPIO_PIN_0的宏定义,为了容易观看,我把16位写出来了,很容易能观察出来的。
//#define GPIO_PIN_0 //0000 0000 0000 0001 ((uint16_t)0x0001) /* Pin 0 selected */
//#define GPIO_PIN_1 //0000 0000 0000 0010 ((uint16_t)0x0002) /* Pin 1 selected */
//#define GPIO_PIN_2 //0000 0000 0000 0100 ((uint16_t)0x0004) /* Pin 2 selected */
//#define GPIO_PIN_3 //0000 0000 0000 1000 ((uint16_t)0x0008) /* Pin 3 selected */
//#define GPIO_PIN_4 //0000 0000 0001 0000 ((uint16_t)0x0010) /* Pin 4 selected */
//#define GPIO_PIN_5 //0000 0000 0010 0000 ((uint16_t)0x0020) /* Pin 5 selected */
//#define GPIO_PIN_6 //0000 0000 0100 0000 ((uint16_t)0x0040) /* Pin 6 selected */
//#define GPIO_PIN_7 //0000 0000 1000 0000 ((uint16_t)0x0080) /* Pin 7 selected */
//#define GPIO_PIN_8 //0000 0001 0000 0000 ((uint16_t)0x0100) /* Pin 8 selected */
//#define GPIO_PIN_9 //0000 0010 0000 0000 ((uint16_t)0x0200) /* Pin 9 selected */
//#define GPIO_PIN_10 //0000 0100 0000 0000 ((uint16_t)0x0400) /* Pin 10 selected */
//#define GPIO_PIN_11 //0000 1000 0000 0000 ((uint16_t)0x0800) /* Pin 11 selected */
//#define GPIO_PIN_12 //0001 0000 0000 0000 ((uint16_t)0x1000) /* Pin 12 selected */
//#define GPIO_PIN_13 //0010 0000 0000 0000 ((uint16_t)0x2000) /* Pin 13 selected */
//#define GPIO_PIN_14 //0100 0000 0000 0000 ((uint16_t)0x4000) /* Pin 14 selected */
//#define GPIO_PIN_15 //1000 0000 0000 0000 ((uint16_t)0x8000) /* Pin 15 selected */
//#define GPIO_PIN_All //1111 1111 1111 1111 ((uint16_t)0xFFFF) /* All pins selected */
完事,因为要考试,不知道考试时是否需要重新装cubemx和G4的包,明天装个虚拟机训练一下快速安装和离线装包的步骤。