STM32固件库移植 - MAT
更新时间:2024-04-17 20:55:01 阅读量: 综合文库 文档下载
- stm32固件库下载推荐度:
- 相关推荐
0814_lesson2 笔记
1:栈指针的概念
Stack_Size EQU 0x00000200
2:堆的概念
Heap_Size EQU 0x00000000
3:DCD定义4个内存地址(0~3,4~7)
4:设置进入mian.c
5:新建main.c注意事项:
0817 固件库移植
1:错误1
0817 建立STM32库函数工程模板
建立“工程模板练习”:stm32库、main空文件夹、project空文件夹、output空文件夹
新建工程分四个组注意:新建的项目名存放在“project”下,选择芯片,不加载默认启动文件。
添加组1:CM3(ARM内核访问定
义):\\STM32F10x_StdPeriph_Lib_V3.5.0\\Libraries\\CMSIS\\CM3\\CoreSupport\\core_cm3.c
添加组2:STlib(ST编写的外设
库)STM32F10x_StdPeriph_Lib_V3.5.0\\Libraries\\STM32F10x_StdPeriph_Driver\\src下的需要的部分
添加组3:system内容是ST工程模板中的“.c”文件
(\\STM32F10x_StdPeriph_Lib_V3.5.0\\Project\\STM32F10x_StdPeriph_Template)
添加组4:建立自己的main.c(放在main空文件夹下),在添加一个启动的.s文件
(\\STM32F10x_StdPeriph_Lib_V3.5.0\\Libraries\\CMSIS\\CM3\\DeviceSupport\\ST\\STM32F10x\\startup\\arm的startup_stm32f10x_md(中等容量,按照所使用的选择相应的))
在添加完组之前千万不要点击“编译”
指定输出路径:到output文件夹 ,避免主目录下的文件杂乱。
建立4组添加相应文件,并确认输出文件路径后可以编译。
移植后的错误 1:..\\STM32F10x_StdPeriph_Lib_V3.5.0\\Libraries\\STM32F10x_StdPeriph_Driver\\src\\misc.c(24): error: #5: cannot open source input file \No such file or directory 找不到\文件 解决:指定出其路径
错误2:
:..\\STM32F10x_StdPeriph_Lib_V3.5.0\\Libraries\\STM32F10x_StdPeriph_Driver\\src\\misc.c(99): warning: #223-D: function \没有发现\(参数裁决)的存在。(STM32F10X_MD USE_STDPERIPH_DRIVER)
错误3:
e:\\Program Files\\MDK_ARM\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_type.h(23): error: #256: invalid redeclaration of type name \(declared at line 470 of \Files\\MDK_ARM\\ARM\\INC\\ST\\STM32F10x\\stm32f10x.h\
表示安装的MDK编译器本身的自带的ST_M3的库与当前所要使用的3.5版本的库冲突,解决要加3个制定的地址:
A:..\\STM32F10x_StdPeriph_Lib_V3.5.0\\Libraries\\CMSIS\\CM3\\CoreSupport
B:..\\STM32F10x_StdPeriph_Lib_V3.5.0\\Libraries\\CMSIS\\CM3\\DeviceSupport\\ST\\STM32F10x C:..\\STM32F10x_StdPeriph_Lib_V3.5.0\\Project\\STM32F10x_StdPeriph_Template
错误4:
..\\STM32F10x_StdPeriph_Lib_V3.5.0\\Libraries\\CMSIS\\CM3\\DeviceSupport\\ST\\STM32F10x\\stm32f10x.h(96): error: #35: #error directive: \select first the target STM32F10x device used in your application (in stm32f10x.h file)\错误指定处:
#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL)
#error \file)\#endif
解决:添加STM32F10X_MD因为使用的是中等容量(ROM)的芯片
编译后直至出现0-0; compiling stm32f10x_it.c...
compiling system_stm32f10x.c... linking...
Program Size: Code=848 RO-data=268 RW-data=20 ZI-data=1636 \移植练习.axf\到此一个完整库函数应用工程的空模板建成!
在Keil中编译工程成功后,在下面的Bulid Ouput窗口中会输出下面这样一段信息:
Program Size: Code=6320 RO-data=4864 RW-data=44 ZI-data=1636
代表的意思:
Code :是程序中代码所占字节大小
RO-data :程序中所定义的指令和常量大小 (个人理解 :Read Only) RW-data :程序中已初始化的变量大小 (个人理解”:Read/Write) ZI-Data :程序中未初始化的变量大小 (个人理解 :Zero Initialize) ROM(Flash) size = Code+RO-data+RW-data; RAM size = RW-data+ZI-data
可以通过.map查看占用的flash和ram大小
Program Size: Code=848 RO-data=268 RW-data=20 ZI-data=1636
Total RO Size (Code + RO Data) 1116 ( 1.09kB) Total RW Size (RW Data + ZI Data) 1656 ( 1.62kB) Total ROM Size (Code + RO Data + RW Data) 1136 ( 1.11kB)
1:LED工程
在一个基础的库函数孔模板上添加main.c的代码:
1:添加头文件#include\(打开了解)
2:初始化GPIO(和0814_lesson2讲的操作一样,不同点在与这次试用的是库函数调用的方式操作寄存器的),依照STM32固件库使用手册的中文翻译版,
void LED_init() { // // //
IO.GPIO_Pin=GPIO_Pin_8;
IO.GPIO_Speed=GPIO_Speed_50MHz; IO.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitTypeDef IO; //变量的形式 IO. *IO是指针的形式 IO->
4h 20h
1
1
!!!!!!!!!!!!
RCC_APB2PeriphClockCmd(u32 RCC_APB2Periph,FunctionalState NewState); //cmd:开关 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);//开A口时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD ,ENABLE);//开D口时钟
// }
GPIO_Init(GPIOA,&IO); //使用这个函数是需要初始化结构体成员
GPIO_Init(GPIOA, GPIO_InitTypeDef* GPIO_InitStruct);//A口初始化 IO.GPIO_Pin=GPIO_Pin_2;
IO.GPIO_Speed=GPIO_Speed_50MHz; IO.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(GPIOD,&IO);
3.封装LED子函数 void LED1_ON() { GPIO_ResetBits(GPIOA,GPIO_Pin_8); }
void LED1_OFF() { GPIO_SetBits(GPIOA,GPIO_Pin_8); }
void LED2_ON() { GPIO_ResetBits(GPIOD,GPIO_Pin_2); }
void LED2_OFF() { GPIO_SetBits(GPIOD,GPIO_Pin_2); }
4调用封装函数即可 void delay(u32 x) { while(x--); }
int main() { LED_init(); while(1) { LED1_ON(); LED2_ON(); delay(1000000); LED1_OFF();
LED2_OFF(); delay(1000000); } }
到此一个完整的LED库函数版本的STM32程序完成!!!!!!
接下来需要像51一样把LED的“LED.c”、“LED.h”做成文件夹的形式方便以后试用。
1:现在工程的主目录下新建“LED空文件夹”把做好的“LED.c”、“LED.h”放进去,在以组的形式添加到工程目录下(在目录下新建LED组,再把文件夹下的LED.c加进来),同时要把LED.h的路径加载到如下图所示:往后的每个使用的“.h”文件都要添加进来!!!!!!!
警告1:..\\LED\\LED.c(37): warning: #1-D: last line of file ends without a newline 需要在代码的最后一行加回车换行
警告2:..\\LED\\LED.h(10): warning: #1295-D: Deprecated declaration LED2_OFF - give arg types
需要在没有形参的函数中假如void的标志(仅在.h文件中)
2::12864的移植 BSP:板级支持包
1:添加原先51的12864.c和12864.h到主目录下的12864文件夹中 2:设置软件包含12864.h头文件的位置
编译解决出现的问题,所谓的移植就是指解决编译产生的问题 问题: 1:..\\12864\\12864.h(4): error: #5: cannot open source input file \directory
解决:#include\ //替代#include
2:..\\12864\\12864.h(9): error: #20: identifier \Sbit、P3等没有定义。
解决://sbit RS_CS=P3^5; //-- 4pin //sbit RW_SID=P3^6; //-- 5pin //sbit E_CLK=P3^7; //-- 6pin
//用stm32开发板的PA13(CS)、PA14(RW)、PA15(EN)替换
#define RS_CS_0 GPIO_ResetBits(GPIOA,GPIO_Pin_8); //从新定义管脚!!! #define RS_CS_1 GPIO_SetBits(GPIOA,GPIO_Pin_8); #define RW_SID_0 GPIO_ResetBits(GPIOA,GPIO_Pin_9); #define RW_SID_1 GPIO_SetBits(GPIOA,GPIO_Pin_9); #define E_CLK_0 GPIO_ResetBits(GPIOA,GPIO_Pin_10); #define E_CLK_1 GPIO_SetBits(GPIOA,GPIO_Pin_10);
同时也初始化相应管脚(开时钟、设置IO状态)所以要有IO口的初始化函数: 包含在12864.c中。当然下文的对应的12864操作也得改的和后来定义的一样(RS_CS_1) void LCD_prot() { GPIO_InitTypeDef IO; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE );//A口时钟 ,打开
}
IO.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10; IO.GPIO_Speed=GPIO_Speed_50MHz; IO.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(GPIOA,&IO);//A口初始化
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 固件
- 移植
- STM32
- MAT
- 华蓥山国家地质公园工程施工组织设计 - 图文
- 第8课时 牛顿第二定律及两类动力学问题
- 溶血反应抢救流程
- 2018版心脏病用药市场供需形势分析研究报告目录
- 各种电吉他的特性
- 建筑电气工程智能化的设计思路分析
- 110变电站监理细则 - 图文
- 汽车构造 - 图文
- 考古、 盗墓 和 风水(3) - 图文
- 工程测量项目理论试题库附答案
- 高电模拟练习题1
- 对非物质文化遗产传承人生存环境的思考
- 2018-2024年中国高光谱成像仪市场分析及发展策略研究预测报告
- 普通三角形钢屋架设计计算说明书
- 《医疗器械生物学评价报告》的出具与审查要点
- 阴离子表面活性剂综述作业
- 我的家访故事余江四中 宋亚伟(1)
- 基于事件驱动模型的性能测试架构
- 某污水处理厂安全操作规程(2)
- 关于征求《京福闽赣铁路客运专线有限公司工程线运输及施工安全管