【STM32F303开发】+ 非CubeKeil环境搭建&简易点灯——by shadow丶
感觉上最能锻炼的能力的还是使用Keil!寄存器各种映射,如果要实现功能mbed固然不错,不过要是作为学习Keil寄存器也是不错的0.0本教程献给有兴趣有时间的朋友,帮你简单如个门
本人小白,教程过于简单0.0大牛勿喷!!!
想快速开发的坛友可以使用mbed:
【STM32F303开发】+ 失败的固件升级&点灯——by shadow丶
https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=602253&fromuid=2072898
下面开始把,首先安装keil
安装包在keil官网就可以下载到
keil官网:http://www.keil.com/
MDK5.15:http://www.keil.com/demo/eval/arm.htm#DOWNLOAD
懒人通道度盘:链接:https://pan.baidu.com/s/1gd4bEoz 密码:3wnu
PS:要是不好使及时向楼主反映/呃要不就勤快下去官网下0.0
破解:
PS:本人试过好使不过软件得以管理员身份运行0.0才可以通过验证
安装就不说了 网上教程一堆一堆的0.0
下面搭建环境走起
1.首先你需要下载STM32F303的固件库
单击下
要是第一次使用 先更新下0.0
下载相关0.0
2.开始我们环境的搭建
Project -> New uVision Project
选择芯片可以观察我门的板子上是RET6,我们选择RE
我们勾选CMSIS项目中的CORE 和 Device项目中的Startup
最少要勾选这两项,
这样一个空的工程就建立好了。
3.我门再新建一个Main的文件
4.做些设置
是否生成Hex文件(后来发现貌似拖拽hex文件不好使0.0反正bin是好使)
呃这里得注意下添加头文件路径这两路径都是有头文件的0.0
设置一下硬件仿真0.0
5.main中输入以下代码
最有在main文件中记得主函数最后要在括号外有个回车 不然会报错
一个空白工程已经建立完成下面我们简单的控制下io口
看看F303 的电路图
PS:每次都是低电平点灯0.0也不用注意什么上下拉0.0这个。。。
PS:还有坑爹的为啥就没有中文的f3手册呢0.0
https://www.stmcu.org.cn/module/forum/forum.php?mod=image&aid=345641&size=300x300&key=58d3e27706ae6fae&nocache=yes&type=fixnone
首先打开PA时钟的使能0.0
可以看见在17位。。。
PS:妹的和F1完全不一样。。。
我们写语句:RCC->AHBENR |= 1<<17;
PS:注意如果不用位操作有可能直接死机0.0楼主开始写的就是
RCC->AHBENR = 0x00020000;然后编译莫问题0.0一下子程序就不好使了
STlink 无法读取芯片!
解决办法:下个Bin文件就好了0.0
看看IO的寄存器把
GPIOA->MODER |= 1<<10;
GPIOA->OSPEEDR |= 1<<10;
GPIOA->PUPDR |= 1<<10;
好了总算到最后一个寄存器了0.0
这个和f1一样0.0
GPIOA->ODR |= 1<<5;
给个高电平0.0
PS:坑爹的英文文档,为啥以前就没好好学英语啊0.0要不然 不至于这么费劲
然后编译下载
出现这些说明我们的设置没有问题
效果就led常亮
#include <stm32f303xe.h>
int main() {
RCC->AHBENR |= 1<<17;
GPIOA->MODER |= 1<<10;
GPIOA->OSPEEDR |= 1<<10;
GPIOA->PUPDR |= 1<<10;
GPIOA->ODR |= 1<<5;
}
shadow丶 发表于 2015-6-22 00:49
简单的说这样就已经跪了!!!
直接赋值就跪了0.0
最根本的是原因是下面的那句GPIOA->MODER= 1<<10;关闭了JTAG/SWD功能,所以才导致STLINK连不上开发板。
Stlink 找不到开发板:
因为JTAG/SWD引脚在复会后就被默认设置为AF的模式作为下载使用:
上面几个引脚对应的IO口的MODER的复位值也是设置为AF模式:
所以GPIOA->MODER= 1<<10;这句代码直接把SWD使用的PA14/PA13设置了输入模式,这也就导致了开发板的SWD功能被关闭,所以stlink也就连不上开发板了。有的时候可能真的需要SWD引脚下载完代码后作为其他的模式使用,如果是这样的只需要在每次下载的时候复位开发板后马上下载程序即可,所以你这个代码每次复位后也能正常下载使用STLINK。
creep 发表于 2015-6-21 17:22
感谢分享,看到了床单,这是直接在床上搞起了啊。
使能某个外设的时钟肯定不能直接对RCC寄存器这样赋值,RC ...
呃算是把0.0 回家了就自由两天0.0嘿嘿 对单独RCC的赋值没事 然后再调用后面控制引脚的寄存器STlink直接就变黄灯了 总共就用这么及个寄存器0.0于是就跪了0.0从新刷个bin文件才好的
shadow丶 发表于 2015-6-21 19:37
呃算是把0.0 回家了就自由两天0.0嘿嘿 对单独RCC的赋值没事 然后再调用后面控制引脚的寄存器ST ...
只进行RCC->AHBENR = 0x00020000;操作肯定不会导致Stlink杯具的,不知道你是不是还进行了其他的操作,如果方便的话把错误的设置分享出来,也避免其他人掉坑里! 沙发自己座有问题补充用 多谢分享。。。。 感谢分享,看到了床单,这是直接在床上搞起了啊。
使能某个外设的时钟肯定不能直接对RCC寄存器这样赋值,RCC->AHBENR = 0x00020000;这会导致其他的外设的时钟被关闭。但是即使这样写了,也不会导致Stlink连不上吧。 看看什么效果, mark0668 发表于 2015-6-21 18:46
看看什么效果,
呃效果就是灯常亮啊没加延时 主要就是搭建下环境0.0
点灯是为了证明环境好使 creep 发表于 2015-6-21 17:22
感谢分享,看到了床单,这是直接在床上搞起了啊。
使能某个外设的时钟肯定不能直接对RCC寄存器这样赋值,RC ...
不过很奇怪keil的库 没有STM32f3的库吗? 还是必须cube建? shadow丶 发表于 2015-6-21 19:41
不过很奇怪keil的库 没有STM32f3的库吗? 还是必须cube建?
STM32F30x系列标准外设库
STM3F303HAL底层驱动 creep 发表于 2015-6-21 21:17
只进行RCC->AHBENR = 0x00020000;操作肯定不会导致Stlink杯具的,不知道你是不是还进行了其他的操作,如 ...
是啊,stlink应该是好的,只是f303不通了,我想只要再重新编程一个bin就会好。
楼主不也重新编程了一个bin了吗,这已经说明stlink没问题了,否则没法编程。
另:楼主,你没有做时钟的配置,使用默认的配置,这个靠谱吗? creep 发表于 2015-6-21 21:15
STM32F30x系列标准外设库
STM3F303HAL底层驱动
哦 我知道就是那个keil5的pack里没有
像f103pack里直接就有3.5的库 creep 发表于 2015-6-21 21:17
只进行RCC->AHBENR = 0x00020000;操作肯定不会导致Stlink杯具的,不知道你是不是还进行了其他的操作,如 ...
嗯嗯 好的我再试试应该能试出来
其实按位操作就不会掉坑!! creep 发表于 2015-6-21 21:15
STM32F30x系列标准外设库
STM3F303HAL底层驱动
简单的说这样就已经跪了!!!
直接赋值就跪了0.0
芯片已经检测不到了
moyanming2013 发表于 2015-6-21 23:56
是啊,stlink应该是好的,只是f303不通了,我想只要再重新编程一个bin就会好。
楼主不也重新编程了一个bi ...
是啊不过应该默认就是72m 的 stlink当然还好就是连不到芯片了0.0