完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
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秒 */ |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1632 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1559 浏览 1 评论
985 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1605 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
655浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
525浏览 3评论
540浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
512浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 19:15 , Processed in 1.018597 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号