来源b站江科大。
要学会看头文件里的函数定义。
LED闪烁
#include "stm32f10x.h" // Device header
#include "Delay.h"
int main(void)
{
//外设时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//配置端口
GPIO_InitTypeDef GPIO_InitStructure;
//PP高低电平都有效,OD低电平有效
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
//初始化
GPIO_Init(GPIOA,&GPIO_InitStructure);
//GPIO_SetBits(GPIOA,GPIO_Pin_0);
//GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);
while(1)
{
//用GPIO的常用函数完成
GPIO_ResetBits(GPIOA,GPIO_Pin_0);
Delay_ms(500);
GPIO_SetBits(GPIOA,GPIO_Pin_0);
Delay_ms(500);
GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);
Delay_ms(500);
GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);
Delay_ms(500);
GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)0);
Delay_ms(500);
GPIO_WriteBit(GPIOA,GPIO_Pin_0,(BitAction)1);
Delay_ms(500);
}
}
LED流水灯
基本操作与上面一样
GPIO_Write(GPIOA,~0x0001);
Delay_ms(500);
GPIO_Write(GPIOA,~0x0002);
Delay_ms(500);
GPIO_Write(GPIOA,~0x0004);
Delay_ms(500);
GPIO_Write(GPIOA,~0x0008);
Delay_ms(500);
GPIO_Write(GPIOA,~0x0010);
Delay_ms(500);
GPIO_Write(GPIOA,~0x0020);
Delay_ms(500);
GPIO_Write(GPIOA,~0x0040);
Delay_ms(500);
GPIO_Write(GPIOA,~0x0080);
Delay_ms(500);
//但是这种方法led会第一次全亮
// GPIO_ResetBits(GPIOA,GPIO_Pin_0);
// Delay_ms(500);
// GPIO_SetBits(GPIOA,GPIO_Pin_0);
// GPIO_ResetBits(GPIOA,GPIO_Pin_1);
// Delay_ms(500);
// GPIO_SetBits(GPIOA,GPIO_Pin_1);
// GPIO_ResetBits(GPIOA,GPIO_Pin_2);
// Delay_ms(500);
// GPIO_SetBits(GPIOA,GPIO_Pin_2);
// GPIO_ResetBits(GPIOA,GPIO_Pin_3);
// Delay_ms(500);
// GPIO_SetBits(GPIOA,GPIO_Pin_3);
// GPIO_ResetBits(GPIOA,GPIO_Pin_4);
// Delay_ms(500);
// GPIO_SetBits(GPIOA,GPIO_Pin_4);
// GPIO_ResetBits(GPIOA,GPIO_Pin_5);
// Delay_ms(500);
// GPIO_SetBits(GPIOA,GPIO_Pin_5);
// GPIO_ResetBits(GPIOA,GPIO_Pin_6);
// Delay_ms(500);
// GPIO_SetBits(GPIOA,GPIO_Pin_6);
// GPIO_ResetBits(GPIOA,GPIO_Pin_7);
// Delay_ms(500);
// GPIO_SetBits(GPIOA,GPIO_Pin_7);
蜂鸣器
蜂鸣器低电平有效,和上述代码相同只需更改相应接线的引脚。