帮人做推广的网站,如何搭建个人博客,3d装修设计软件手机版,新闻app开发目录 一、工程模板二、点亮主板1. 配置寄存器2. 调用库函数 三、LED1. 闪烁2. 流水灯 四、蜂鸣器 一、工程模板 参照第一篇#xff0c;新建工程目录ProjectMould#xff0c;将先前打包好的Start#xff0c;Library和User文件^C^V过来#xff0c;并在Keil5内完成器件支持包的… 目录 一、工程模板二、点亮主板1. 配置寄存器2. 调用库函数 三、LED1. 闪烁2. 流水灯 四、蜂鸣器 一、工程模板 参照第一篇新建工程目录ProjectMould将先前打包好的StartLibrary和User文件^C^V过来并在Keil5内完成器件支持包的加载模块路径的添加和ST配置即可得到工程模板。 以后建立新项目只需拷贝模板、重命名后在Keil5内打开即可。
二、点亮主板 所需器材STM32最小系统板、ST-Link仿真器、母对母杜邦线4根。 端口接线
STM32ST-LinkGNDGNDSWCLKSWCLKSWIOSWDIO3V33.3V 正确接入后PWR端口01灯常亮PC13端口02灯闪烁这是芯片内置的初始测试程序。
1. 配置寄存器 该方法需要阅读芯片参考手册将数字信号转换为八进制传递参数。
#include stm32f10x.hint main(void)
{// 配置寄存器点灯RCC-APB2ENR 0x00000010; // RCC寄存器——APB2外设时钟使能寄存器 - 开启IO端口C时钟GPIOC-CRH 0x00300000; // GPIO寄存器——端口配置高寄存器 - 通用推挽输出模式最大速度50MHzGPIOC-ODR 0x00002000; // GPIO寄存器——端口输出数据寄存器 - PC13端口高电平(灭)//GPIOC-ODR 0x00000000; // GPIO寄存器——端口输出数据寄存器 - PC13端口低电平(亮)
} 程序编写完成后F7 F8编译并载入就可以实现PC13端口02灯的控制。
2. 调用库函数 该方法形式较为复杂但代码更具复用性和可读性下文开始全部使用库函数编程。
#include stm32f10x.hint main(void)
{// 外设时钟控制使能/失能APB2的外设时钟 - 开启IO端口C时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);// 配置结构体参数GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; // 通用推挽输出模式GPIO_InitStructure.GPIO_Pin GPIO_Pin_13; // PC13引脚GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 最大速度50MHz// 初始化端口模式 - 初始化GPIOC外设时钟GPIO_Init(GPIOC, GPIO_InitStructure);// 配置端口电平GPIO_SetBits(GPIOC, GPIO_Pin_13); // 高电平熄灭//GPIO_ResetBits(GPIOC, GPIO_Pin_13); // 低电平点亮
} 三、LED 所需器材STM32最小系统板、ST-LINK仿真器、MB-102面包板、LED长脚短脚-若干、跳线若干、杜邦线若干。 系统板初次插入面包板会十分困难建议先用杜邦线探针逐个疏通面包板的插孔然后在系统板两端交替施力“跷跷板式”下压直至完全进入。
1. 闪烁 参照第一篇将目录Resource\程序源码\STM32Project-无注释版\1-3 Delay函数模块\下的头文件加入System完成延时函数模块的添加编译并载入以下代码。
#include stm32f10x.h // 器件模块
#include Delay.h // 延时模块// LED闪烁
int main(void)
{// 使能/失能APB2的外设时钟 - 开启IO端口A时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// 配置结构体参数GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; // 通用推挽输出模式GPIO_InitStructure.GPIO_Pin GPIO_Pin_0; // PA0引脚GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 最大速度50MHz// 配置端口模式 - 初始化GPIOA外设时钟GPIO_Init(GPIOA, GPIO_InitStructure);// 配置端口电平//GPIO_SetBits(GPIOA, GPIO_Pin_0); // 高电平熄灭//GPIO_ResetBits(GPIOA, GPIO_Pin_0); // 低电平点亮// 闪烁周期200毫秒while(1){//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(100);GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)1); // 高电平熄灭Delay_ms(100);}
} 2. 流水灯 在A0至A7端口接入LED。
#include stm32f10x.h // 器件模块
#include Delay.h // 延时模块// 流水灯
int main(void)
{// 使能/失能APB2的外设时钟 - 开启IO端口A时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// 配置结构体参数GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; // 通用推挽输出模式GPIO_InitStructure.GPIO_Pin GPIO_Pin_All; // 所有引脚//GPIO_InitStructure.GPIO_Pin GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; // PA引脚GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 最大速度50MHz// 配置端口模式 - 初始化GPIOA外设时钟GPIO_Init(GPIOA, GPIO_InitStructure);// 延时闪烁取反 - 低电平点亮while(1){GPIO_Write(GPIOA, ~0x0001); // A0Delay_ms(100);GPIO_Write(GPIOA, ~0x0002); // A1Delay_ms(100);GPIO_Write(GPIOA, ~0x0004); // A2Delay_ms(100);GPIO_Write(GPIOA, ~0x0008); // A3Delay_ms(100);GPIO_Write(GPIOA, ~0x0010); // A4Delay_ms(100);GPIO_Write(GPIOA, ~0x0020); // A5Delay_ms(100);GPIO_Write(GPIOA, ~0x0040); // A6Delay_ms(100);GPIO_Write(GPIOA, ~0x0080); // A7Delay_ms(100);}
}四、蜂鸣器 所需器材STM32最小系统板、ST-LINK仿真器、MB-102面包板、3.3V有源蜂鸣器、跳线若干、公对公/母杜邦线若干。 端口接线除了A15B3B4是JLINK的调试端口其他端口都可用。
蜂鸣器面包板GND-I/OB13VCC
#include stm32f10x.h // 器件模块
#include Delay.h // 延时模块// 蜂鸣器
int main(void)
{// 使能/失能APB2的外设时钟 - 开启IO端口B时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);// 配置结构体参数GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; // 通用推挽输出模式GPIO_InitStructure.GPIO_Pin GPIO_Pin_12; // PB12引脚GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 最大速度50MHz// 配置端口模式 - 初始化GPIOB外设时钟GPIO_Init(GPIOB, GPIO_InitStructure);// 手表闹钟while(1){GPIO_ResetBits(GPIOB, GPIO_Pin_12); // 低电平响Delay_ms(100);GPIO_SetBits(GPIOB, GPIO_Pin_12);Delay_ms(100);GPIO_ResetBits(GPIOB, GPIO_Pin_12);Delay_ms(100);GPIO_SetBits(GPIOB, GPIO_Pin_12);Delay_ms(700);}
}