1.工程简介与调试流程
对ARM内核的基础文件,一般不需要修改。
.c文件即库文件,要根据具体需要增减
Startup启动文件,不需要修改
User main.c是用户要编写的主程序文件。
Stm32f10 it.c 不需要修改
Basic中delay.c是我们要编写的延时程序函数
sys.c 不需要修改
Hardware中led.c和key.c 是我们用户自己编写的硬件驱动文件。
总结:
main函数下面的内容使我们单片机真正运行的内容。
2.固件库
功能配置寄存器。
作软件和硬件之间的连接,多组32位的寄存器,由ARM内核来操纵,有很多功能内,每一位置零或置一都会使硬件部分有些变换。操作硬件就是操作SRAM中的功能配置寄存器。
硬件到软件的层次
要安装的固件库就是低层驱动程序。
寄存器:寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑威廉希尔官方网站
,但这种时序逻辑威廉希尔官方网站
只包含存储威廉希尔官方网站
。寄存器的存储威廉希尔官方网站
是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是中央处理器内的组成部分。寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和位址。
具体固件库安装操作看视频教程。(第二十步)
3.核心板的威廉希尔官方网站
分析
核心板正反面威廉希尔官方网站
标注
FT232串口芯片,把USB接口转换为TTL电平,使用这个串口与电脑进行交互。
3.3V稳压芯片是为了把USB的5V电压转换为单片机可供电的电压。
具体接口分析待补充
4.点天灯仪式
#include “stm32f10x.h” //STM32头文件
#include “sys.h” //系统函数库文件
#include “led.h”
int main (void){
RCC_Configuration();//时钟设置
LED_Init();将 LED灯的接口初始化
whlie(1){
//方法1:
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1));//LED1接口输出高电平1
delay_us(50000);//延时1秒
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0));//LED1接口输出低电平0
delay_us(50000);//延时1秒
//方法2:
// GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1-GPIO_ReadOutputDataBit(LEDPORT,LED1)));
// delay_ms(500);//延时一秒
}
}
初始化函数:所有IO端口在使用前都要进行初始化。内容:端口是用来输入还是输出,端口号是多少。
结构体:TypeDef
RCC_ABP2:在时钟层面启动对应IO端口及功能。
5.更多点灯程序
GPIO_WriteBit
GPIO_ResetBits(专用于清零的函数)
GPIO_SetBits(专用于将IO端口的置位,也就是输出高电平)
GPIO_Write(对IO端口整组进行操作)
6.LED闪灯程序
#include“delay.h”
delay_s() //秒
delay_ms() //毫秒
第一块是控制滴答定时器的,
下面都是套用第一条的,
初学会调用使用即可。
注意:调用什么样级别的延时函数,及参数值在上面范围;当你的系统主频修改时在延时函数中也要对应修改。
7.呼吸灯
亮度随着时间逐渐变亮或变灭。
(亮度占空比)
程序名: LED呼吸灯程序
硬件支持: STM32F103C8 外部晶振8MHz RCC函数设置主频72MHz
修改日志:
1-
本模板加载了STM32F103内部的RCC时钟设置,并加入了利用滴答定时器的延时函数。
可根据自己的需要增加或删减。
#include “stm32f10x.h” //STM32头文件
#include “sys.h”
#include “delay.h”
#include “led.h”
int main (void){//主程序
//定义需要的变量
u8 MENU;//定义一个无符号8位
u16 t,i;//无符号16位变量
//初始化程序
RCC_Configuration(); //时钟设置
LED_Init();
//设置变量的初始值
MENU = 0;
t = 1;
//主循环
while(1){
//菜单0
if(MENU == 0){ //变亮循环;//MENU菜单切换,菜单等于0运行下面的程序
for(i = 0; i 《 10; i++){
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED1接口输出高电平1
delay_us(t); //延时(微秒级)
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0)); //LED1接口输出低电平0
delay_us(501-t); //延时(501占空比的全部周期长度)
}
t++;(灯的亮度逐渐变亮)
if(t==500){
MENU = 1;//从当前菜单内容切换到其他菜单内容
}
}
//菜单1
if(MENU == 1){ //变暗循环
for(i = 0; i 《 10; i++){
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED1接口输出高电平1
delay_us(t); //延时
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0)); //LED1接口输出低电平0
delay_us(501-t); //延时
}
t--;
if(t==1){
MENU = 0;//又回到了上面的变亮循环
}
}
}
}
【变量定义】
u32 a; //定义32位无符号变量a(存放在SRAM)
u16 a; //定义16位无符号变量a
u8 a; //定义8位无符号变量a
vu32 a; //定义易变的32位无符号变量a
vu16 a; //定义易变的 16位无符号变量a
vu8 a; //定义易变的 8位无符号变量a
uc32 a; //定义只读的32位无符号变量a(存放在Flash)
uc16 a; //定义只读 的16位无符号变量a
uc8 a; //定义只读 的8位无符号变量a
#define ONE 1 //宏定义
delay_us(1); //延时1微秒
delay_ms(1); //延时1毫秒
delay_s(1); //延时1秒
*/
1.工程简介与调试流程
对ARM内核的基础文件,一般不需要修改。
.c文件即库文件,要根据具体需要增减
Startup启动文件,不需要修改
User main.c是用户要编写的主程序文件。
Stm32f10 it.c 不需要修改
Basic中delay.c是我们要编写的延时程序函数
sys.c 不需要修改
Hardware中led.c和key.c 是我们用户自己编写的硬件驱动文件。
总结:
main函数下面的内容使我们单片机真正运行的内容。
2.固件库
功能配置寄存器。
作软件和硬件之间的连接,多组32位的寄存器,由ARM内核来操纵,有很多功能内,每一位置零或置一都会使硬件部分有些变换。操作硬件就是操作SRAM中的功能配置寄存器。
硬件到软件的层次
要安装的固件库就是低层驱动程序。
寄存器:寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑威廉希尔官方网站
,但这种时序逻辑威廉希尔官方网站
只包含存储威廉希尔官方网站
。寄存器的存储威廉希尔官方网站
是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是中央处理器内的组成部分。寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和位址。
具体固件库安装操作看视频教程。(第二十步)
3.核心板的威廉希尔官方网站
分析
核心板正反面威廉希尔官方网站
标注
FT232串口芯片,把USB接口转换为TTL电平,使用这个串口与电脑进行交互。
3.3V稳压芯片是为了把USB的5V电压转换为单片机可供电的电压。
具体接口分析待补充
4.点天灯仪式
#include “stm32f10x.h” //STM32头文件
#include “sys.h” //系统函数库文件
#include “led.h”
int main (void){
RCC_Configuration();//时钟设置
LED_Init();将 LED灯的接口初始化
whlie(1){
//方法1:
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1));//LED1接口输出高电平1
delay_us(50000);//延时1秒
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0));//LED1接口输出低电平0
delay_us(50000);//延时1秒
//方法2:
// GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1-GPIO_ReadOutputDataBit(LEDPORT,LED1)));
// delay_ms(500);//延时一秒
}
}
初始化函数:所有IO端口在使用前都要进行初始化。内容:端口是用来输入还是输出,端口号是多少。
结构体:TypeDef
RCC_ABP2:在时钟层面启动对应IO端口及功能。
5.更多点灯程序
GPIO_WriteBit
GPIO_ResetBits(专用于清零的函数)
GPIO_SetBits(专用于将IO端口的置位,也就是输出高电平)
GPIO_Write(对IO端口整组进行操作)
6.LED闪灯程序
#include“delay.h”
delay_s() //秒
delay_ms() //毫秒
第一块是控制滴答定时器的,
下面都是套用第一条的,
初学会调用使用即可。
注意:调用什么样级别的延时函数,及参数值在上面范围;当你的系统主频修改时在延时函数中也要对应修改。
7.呼吸灯
亮度随着时间逐渐变亮或变灭。
(亮度占空比)
程序名: LED呼吸灯程序
硬件支持: STM32F103C8 外部晶振8MHz RCC函数设置主频72MHz
修改日志:
1-
本模板加载了STM32F103内部的RCC时钟设置,并加入了利用滴答定时器的延时函数。
可根据自己的需要增加或删减。
#include “stm32f10x.h” //STM32头文件
#include “sys.h”
#include “delay.h”
#include “led.h”
int main (void){//主程序
//定义需要的变量
u8 MENU;//定义一个无符号8位
u16 t,i;//无符号16位变量
//初始化程序
RCC_Configuration(); //时钟设置
LED_Init();
//设置变量的初始值
MENU = 0;
t = 1;
//主循环
while(1){
//菜单0
if(MENU == 0){ //变亮循环;//MENU菜单切换,菜单等于0运行下面的程序
for(i = 0; i 《 10; i++){
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED1接口输出高电平1
delay_us(t); //延时(微秒级)
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0)); //LED1接口输出低电平0
delay_us(501-t); //延时(501占空比的全部周期长度)
}
t++;(灯的亮度逐渐变亮)
if(t==500){
MENU = 1;//从当前菜单内容切换到其他菜单内容
}
}
//菜单1
if(MENU == 1){ //变暗循环
for(i = 0; i 《 10; i++){
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED1接口输出高电平1
delay_us(t); //延时
GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0)); //LED1接口输出低电平0
delay_us(501-t); //延时
}
t--;
if(t==1){
MENU = 0;//又回到了上面的变亮循环
}
}
}
}
【变量定义】
u32 a; //定义32位无符号变量a(存放在SRAM)
u16 a; //定义16位无符号变量a
u8 a; //定义8位无符号变量a
vu32 a; //定义易变的32位无符号变量a
vu16 a; //定义易变的 16位无符号变量a
vu8 a; //定义易变的 8位无符号变量a
uc32 a; //定义只读的32位无符号变量a(存放在Flash)
uc16 a; //定义只读 的16位无符号变量a
uc8 a; //定义只读 的8位无符号变量a
#define ONE 1 //宏定义
delay_us(1); //延时1微秒
delay_ms(1); //延时1毫秒
delay_s(1); //延时1秒
*/
举报