为方便使用,用typedef来给变量起名将以下放入main.h中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| typedef int32_t s32; typedef int16_t s16; typedef int8_t s8;
typedef const int32_t sc32; typedef const int16_t sc16; typedef const int8_t sc8;
typedef __IO int32_t vs32; typedef __IO int16_t vs16; typedef __IO int8_t vs8;
typedef __I int32_t vsc32; typedef __I int16_t vsc16; typedef __I int8_t vsc8;
typedef uint32_t u32; typedef uint16_t u16; typedef uint8_t u8;
typedef const uint32_t uc32; typedef const uint16_t uc16; typedef const uint8_t uc8;
typedef __IO uint32_t vu32; typedef __IO uint16_t vu16; typedef __IO uint8_t vu8;
typedef __I uint32_t vuc32; typedef __I uint16_t vuc16; typedef __I uint8_t vuc8;
|
点亮led
GPIO用IO口的输出模式
1 2 3
| HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_SET); HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5); HAL_GPIO_ReadPin(GPIOA, GPIO_Pin_8);
|
点亮led就需要按键了,按键首先要看按键的引脚设置IO口为输入模式,写一个案件处理函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| u8 KEY_Scan(u8 mode) { static u8 key_up=1; if(mode==1)key_up=1; if(key_up&&(KEY0==0||KEY1==0||WK_UP==1)) { delay_ms(10); key_up=0; if(KEY0==0) return KEY0_PRES; else if(KEY1==0) return KEY1_PRES; else if(WK_UP==1) return WKUP_PRES; ALIENTEK MiniSTM32 V3.0 开发板教程 137 STM32 不完全手册(HAL 库版) }else if(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1; return 0; }
|
在头文件中进行添加宏定义
1 2 3 4 5 6 7 8 9 10 11 12
| #ifndef __KEY_H #define __KEY_H #include "sys.h" #define KEY0 HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_5) #define KEY1 HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_15) #define WK_UP HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) #define KEY0_PRES 1 #define KEY1_PRES 2 #define WKUP_PRES 3 void KEY_Init(void); u8 KEY_Scan(u8 mode); #endif
|
串口通信
usart和uart区别为 usart比uart多了同步时钟频率通信,都有异步时钟通信。
串口设置的一般步骤可以总结为如下几个步骤:
- 串口时钟使能,GPIO 时钟使能。
- 设置引脚复用器映射:调用 GPIO_PinAFConfig 函数。
- GPIO 初始化设置:要设置模式为复用功能。
- 串口参数初始化:设置波特率,字长,奇偶校验等参数。
- 开启中断并且初始化 NVIC,使能中断(如果需要开启中断才需要这个步骤)。
- 使能串口。
- 编写中断处理函数:函数名格式为 USARTxIRQHandler(x 对应串口号)。
串口通信的结构体如下
1 2 3 4 5 6 7 8 9 10
| typedef struct { uint32_t BaudRate; //波特率 uint32_t WordLength; //字长 uint32_t StopBits; //停止位 uint32_t Parity; //奇偶校验 uint32_t Mode; //收/发模式设置 uint32_t HwFlowCtl; //硬件流设置 uint32_t OverSampling; //过采样设置 }UART_InitTypeDef
|