用stm32如何编写积分程序,有stm32项目实例网么?

【新提醒】今天终于用上Eclipse写stm32程序了
我的图书馆
【新提醒】今天终于用上Eclipse写stm32程序了
&&此帖已结(0)
15小时45分
结帖率:100%
11:57:23 | |
以前做avr程序,用eclipse很方便。而stm32一直没有调通,只好用keil,keil的功能不错,但是集成集成开发环境特别是代码辅助功能太弱,很不习惯。今天无意中试了一下,发现eclipse 4.3.1版才能安装最新的GNU ARM Eclipse Plug-in(之前一直用eclipse 3.7,试不通),而且里面出现了stm32的工程模板了。试了一个,太舒服了!相关软件Eclipse IDE for C/C++ Developers,& & & & jdk 1.6& & 现在1.6不好找下载地址(是oracle故意的),大家可以下一个jdk 1.7& & Sourcery CodeBench Lite Edition for ARM& & 下载稍微麻烦点,大家可以到这里看看:& & GNU ARM Eclipse Plug-in& & 到这里下载:& &
15小时45分
结帖率:100%
11:58:13 |
软件都是免费滴
13:30:20 |
整一个环境搭建说明啊,呵呵。还是习惯用vim+openocd
接rtos,wince,linux,stm32方面的嵌入式项目,http://bbs.21ic.com/icview--1.html,支持 电话 QQ:
15小时45分
结帖率:100%
13:47:23 |
15小时45分
结帖率:100%
13:53:33 |
1. 安装JDK。 这个基本不用说明,直接反复按“下一步”按钮。2. 将eclipse包解压缩到C盘的某个文件夹中,如:C:\Develop\eclipse 中,为防止和别的版本冲突,可适当改变文件夹的名称。如我使用的是C:\Develop\eclipse-cpp-4.3.1。&&进入eclipse,在eclipse.exe文件上按鼠标右键,选择菜单“发送到”-“桌面快捷方式”。之后,桌面上就有了eclipse的快捷方式。双击快捷方式,启动eclipse
15小时45分
结帖率:100%
13:54:22 |
eclipse启动后,需要选择workspace,指定一个文件夹即可,你以后的所有工程都会放在这个文件夹下。
15小时45分
结帖率:100%
13:56:28 |
3. 安装 Sourcery CodeBench Lite Edition for ARM&&这是个免费软件,直接安装即可。不过,安装完后,请记住安装位置,我安装的位置(默认)是:& &C:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI&&使用64位系统的朋友可能稍微有些不同。
15小时45分
结帖率:100%
14:03:18 |
本帖最后由 ZhangStudy 于
15:12 编辑 4. 安装GNU ARM Eclipse Plug-in& & 其实,这个免费插件不需要下载,可以直接从网上安装。具体步骤如下:(1) 启动eclipse,第一次启动后,请按右边中部的按钮,关闭欢迎屏幕。
(87.04 KB, 下载次数: 1)
(87.04 KB, 下载次数: 0)
15小时45分
结帖率:100%
14:08:34 |
本帖最后由 ZhangStudy 于
14:29 编辑 (2) 选择“Help”-“Install New Software...”菜单,来安装新插件。 选择后,弹出下列窗口:
15小时45分
结帖率:100%
14:17:40 |
本帖最后由 ZhangStudy 于
14:31 编辑 点击“add”按钮,在弹出窗口单击Archieve按钮,选择好自己下载的zip包(ilg.gnuarmeclipse.repository-1.1.6-.zip),结果如下:
(25.82 KB, 下载次数: 0)
15小时45分
结帖率:100%
14:19:21 |
本帖最后由 ZhangStudy 于
14:35 编辑 点击OK按钮,等待eclipse分析软件。结果如下:
(113.41 KB, 下载次数: 3)
15小时45分
结帖率:100%
14:20:12 |
图片看不到哦,第一次发图片。
15小时45分
结帖率:100%
14:25:36 |
本帖最后由 ZhangStudy 于
14:36 编辑 选中“CDT GNU Cross Development Tools”,按Next按钮,等待Eclipse分析软件依赖关系。分析完成后结果如下按Next按钮。
(90.26 KB, 下载次数: 0)
15小时45分
结帖率:100%
14:38:20 |
出现窗口:
(115.89 KB, 下载次数: 0)
15小时45分
结帖率:100%
14:39:13 |
选中接受许可协议,图中的红圈中的选项。按Finish按钮。耐心等待,eclipse会自动下载并安装所需要的软件。
15小时45分
结帖率:100%
14:41:47 |
安装过程中出现下面提示,不必理睬,直接按OK按钮略过。
(35.01 KB, 下载次数: 0)
15小时45分
结帖率:100%
14:43:37 |
安装完成,出现下列窗口,提示重新启动eclipse& &直接按yes按钮重启。
(24.06 KB, 下载次数: 0)
15小时45分
结帖率:100%
14:44:04 |
本帖最后由 ZhangStudy 于
14:45 编辑 安装成功,可以建立工程了。下面叙述建立工程的步骤。
19小时15分
结帖率:28%
14:48:38 |
mentor要注册太麻烦,这个版本的不用注册。原装的eclipse没有复位按钮,每次让程序从头执行都要重新下载,太伤flash寿命了,人家设计的时候就没考虑到嵌入式开发。可以考虑变种eclipse比如CoIDE、TI CCS神马的。
诸葛一生唯补肾 吕端房事不糊涂 虽然我不是基督徒,但你可以用身体传福音给我,我必有所感动。
15小时45分
结帖率:100%
14:48:44 |
启动eclipse后,选择File --&&New&&---&&C Project&&菜单,弹出新建工程窗口,在Project name 处输入 test01,即建立一个名称为test01的工程。按照途中红圈圈的选项操作,然后按Next按钮。
(124.44 KB, 下载次数: 0)
[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢&>&stm32入门实例及源代码
stm32入门实例及源代码
上传大小:1.65MB
stm32入门实例及源代码,还有一本配套的讲解待会传上去
综合评分:3
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有1条
看看,希望比较好
综合评分:
积分/C币:5
综合评分:
积分/C币:10
综合评分:
积分/C币:3
综合评分:
积分/C币:2
综合评分:
积分/C币:3
综合评分:
积分/C币:2
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
stm32入门实例及源代码
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
stm32入门实例及源代码嵌入式自动控制,ROS,Arch Linux,Raspberry/Banana Pi 个人主页:www.alanzjl.com
在stm32上使用Arduino IDE(神舟I号为例)
Arduino IDE是一种很方便的开发环境,通过把底层代码函数化,做到让使用者开发软件不需要太多了解底层控制,缩短了代码,大大提升了开发效率。而且Arduino基于C/C++,其语言、开发环境都很容易理解,是初学者的一个不错选择。但是,Arduino出品的开发板芯片比较古老,计算能力比较低下,较为复杂的运算实现困难。。因此把Arduino环境用在ST意法半导体公司的STM32系列上会有不错的效果。现在网络上已经有Arduino for STM32的文章了,不过都是针对自家做的板子所写,不支持其他板子,这篇文章讲的方法适用性较广,我个人使用的是国产神舟I号开发板,板载STM32F103RB,目前已知此方法适用于STM32F103C8x、STM32F103CBx、STM32F103Rxx
下面进入正文。
详细页面:http://alanzjl.sinaapp.com/2015/02/arduino_in_stm32/
一、软件准备。
1、Arduino最新版,现在好像是1.5.8 BETA,我用的是1.6.0,忘了从哪里下到的了现在貌似找不到了,不过1.5.x也可以。
下载地址:http://www.arduino.cc/en/Main/Software
我的板子:
2、STM32 master文件,下载解压之后,把文件夹名改成Arduino_STM32,拷贝到My Documents/Arduino/hardware下,如果hardware文件夹不存在的话就新建一个。
3、安装STM32驱动,不安装的话com口识别不出来,win7/8应该都可以在线自动安装,如果还是不行的话就百度搜一下驱动程序吧。
4、打开Arduino IDE,选择合适的板子,我选的是下图这个。
选择好COM口,用的是哪个COM口在控制面板-设备管理器里可以看到(如果看不到就说明驱动程序没装好)。另:连接STM32和电脑的时候一定注意STM32上用的是哪个接口!!比如我的这块神舟I,有两个miniUSB口,其中有一个是USB转串口的,那么需要连的就是这个,别连错了!!连错了COM口也不会出现。(如果开发板不是自带USB转串口芯片的,就要自备这块芯片,从串口连接)
二、软件准备完了,下面准备硬件。
1、STM32启动方式:SystemBoot。这个非常重要!我就是在这里卡了好久。
我的这块板子:
不同的开发板BOOT0、BOOT1设置的不一样,我的是用跳帽短接BOOT0,BOOT1不动之后复位进入SystemBoot模式。(stm32有多钟启动模式,UserBoot、SystemBoot、SRAM_Boot模式,其中如果使用串口下载要擦写FLASH的话一定要用SystemBoot模式,UserBoot模式是写好程序之后执行这个程序的时候用的,在我的板子上是BOOT0不短接,BOOT1随意,也就是不用跳线帽的时候的默认模式)
如果模式错了,可能会出现下面这个情况(我当初就是在这里纠结了好久):
2、安好跳线帽之后按reset复位,写好的程序就可以往里面烧写了。
三、来点具体案例吧。
1、LED闪烁。你的开发板上应该有板载LED吧,什么?你的是核心板?那就跳过这一个到下一个或者外接一个LED吧。
led闪烁首先要搞清楚led接在哪个管脚上,我的有三个,分别接在接在PA2、PA3还有PB2上,看PA1比较顺眼,那就PB1吧。
注意,Arduino自家板子的I/O口是有编号的,比如在Arduino Ide里面打开一个实例程序,Blink,可以发现编号为13的管脚接着一个led。。。但是在stm32上面编号是怎么对应的就不一定了。。于是,我们就不能用编号了,用管脚标号吧,买板子的时候商家会给,硬件原理图里面,比如下面这个,可以看出PA2、PA3都是led,那么我们只要把原来实例代码的编号改成这个PA2、PA3就行了。
int led1=PA2;
void setup() {
pinMode(led1,OUTPUT);
void loop() {
digitalWrite(led1,HIGH);
delay(1000);
digitalWrite(led1,LOW);
delay(1000);
下载到板子上,拔掉BOOT0处的跳线帽,reset,就可以看到led1在blink了。注意:每次下载程序都要进入SystemBoot模式下载!
2、串口的应用,就是用串口从板子往电脑发一个Hello World。实例里面可以看出来,Serial.print(“”)函数是打印引号里面的内容,而Serial.println(“”)是打印引号里面内容之后多打一个换行符。这里程序设置波特率为9600,串口调试器端要设置的一样,注意右下角。
void setup() {
Serial.begin(9600);// opens serial port, sets data rate to 9600 bps
Serial.println("Hello World!");
Serial.print("Hello World!");
Serial.print("Hello World!\n");
Serial.print("Hello World!");
void loop() {
要是还有什么不明白,可以到这里https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Installation
在github上面的一篇文章,描述很详细,不过网速实在慢,平常国内下载能到2m/s,校内20-30m/s,但github也就20k/s。。。。而且用百度云离线下载反而更慢。。。
OK,就写这些吧。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!&>&stm32内部flash读写程序
stm32内部flash读写程序
上传大小:2KB
此文件为stm32平台文件,实现功能:擦出stm32f103 flash的第255页,然后写入一整字型数据,读出进行校验是否正确写入。注意:在stm32flash操作时,必须保证内部告诉晶振开启。此文件在 keil环境编译后少些进stm32f103zet后,经jlink仿真,正确执行。欢迎下载
综合评分:4
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有82条
没什么参考价值!!
很有用,收藏了,解了燃眉之急
很好,非常实用 谢谢
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
stm32内部flash读写程序
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
my_friend_ship
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
stm32内部flash读写程序怎么使用stm32写IAP的bootloader和APP
Stm32的bootloader和App的编写注意事项
1、 怎么分配bootloader和app的空间
2、 怎么得到数据和写入flash
3、 怎么从bootloader跳转到app
4、 怎么设置App的中断向量
5、 App中怎么生成bin文件
6、程序执行的流程
1、怎么分配bootloader和app的空间
因为我用的是stm32f103c8t6,它的flash的大小是64k,所以把它分成如上所示
0x ---0x0800 33FF分配给bootloader使用,大小是13k
0x----0x080097FF分配给第一个APP的使用,大小是25k
0x----0x0800 FBFF分配给第二个APP的使用,大小是25k
0x0800FC00----0x0800 FFFF 分配给user_flag和其它标志使用,大小是1k
在keil中设置rom的大小
A、bootloader中rom大小的设置
B、APP1中rom大小的设置
C、APP2中rom大小的设置
Rom设置好了就可以在map中看见地址的改变,这里拿bootloader和app1来说。
Bootloader的map
这里就可以看到RESET的地址改变了
但是要想我们改变的rom在map中也改变keil里面必须要设置如下图,
这里必须要打勾,默认新建的工程是没有选择的
2、怎么得到数据和写入flash
在我的程序是通过串口接收数据,然后调用app_bin_handler(&timer);函数来在里面完成写flash(函数iap_write_appbin(Flash_Current_Write_addr(),g_RxBuf1,length))、和校验写入的数据是否正确(函数flag =read_flash_ECC(Flash_Current_Write_addr(),length);)、校验通过就可以跳转到app中(函数JumpToApp(Flash_Current_Write_addr(),1);)
3、怎么从bootloader跳转到app
voidJumpToApp(u32 ApplicationAddress,u8 flag)
if (((*(vu32*)ApplicationAddress) &0x2FFE0000 ) == 0x)
if(flag == 1)
User_write_Flash_falg();
temp = (*(vu32*)(ApplicationAddress + 4));
JumpToApplication =(FunVoidType)
MSR_MSP(*(vu32*)ApplicationAddress);
JumpToApplication();
程序中就是利用上面的函数实现跳转,中间有个User_write_Flash_falg()函数是用来设置app的标志的,如果当前正在使用的是app1,那么就设置标志位为2,好在下次启动的时候跳转到app2,如果当前正在使用的是app2,那么就设置标志位为1,好在下次启动的时候跳转到app1
至于上面函数的详解可以百度。
4、怎么设置App的中断向量
Stm32的中断重定向比较简单,因为它有一个专用的寄存器
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x9800);
这个函数就是重定向了app2的中断向量,实现起来简单
App中怎么生成bin文件
因为我的程序是通过串口下载app的所以必须要生成bin文件,才方便下载,
在工程里面进行如下设置就可以生成bin文件
其中主要是路径要对,不然找不到.axf文件,也就生成不了bin文件
Bootloader里面主要是
1、设置bootloader和app的空间
2、接收编译好的app的bin文件,写入flash
3、实现跳转
App里面主要修改的地方是
ROM起始地址和分配的空间大小
重定向中断向量
生成bin文件
这里就是整个程序执行的流程
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 stm32应用实例 的文章

 

随机推荐