你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

成功移植STM32 Nucleo到Arduino  

[复制链接]
qianfan 发布时间:2015-1-13 13:35
本帖最后由 QianFan 于 2015-1-16 21:56 编辑
2 m- \  I6 S. J4 D7 b  |& {0 B: F
今天成功的移植了F072 Nucleo到Arduino,特发帖嘚瑟一下。请看大图:
0 X* _& v8 M/ {# l9 V) R. j

: p# W3 y6 r+ {9 Y  J$ V3 j: S目前的功能还是很简单,只是简单的实现了Arduino控制IO接口的函数。实现了下面的几条函数digitalWrite,digitalRead,pinMode,另外,为了方便大家使用,我在Arduino的基础上增加了一个函数toggleDigital,用于翻转IO接口。
" B1 h6 [0 q9 m' N5 a* e0 }5 n1 X: S2 z8 D5 L

+ u3 j! \  A7 G( ~% a, n程序在开始的时候使能了systick,配置成为1ms中断一次。这样,我们就能够使用delay就行延时了。
. N3 p/ `& C  }2 t, A& e) b8 D) P: E; l8 t7 A, I  f( F8 k, r  m
- n) Z0 C; ^2 S6 _% s0 h  E- ~
代码使用arm gcc进行编译。在整个移植的过程中,最重要的就是Arduino中platforms.txt文件的编写。这个文件的作用最大了,类似于gcc中的makefile。这个文件关系到函数是如何编译的,生成什么样的文件(hex or bin)使用什么下载工具,下载工具的命令行是什么。由于Nucleo板子上面自带ST-LINK,所以当然是使用ST-LINK下载。但是似乎是现在移植的一个难题,因为Arduino在进行下载的时候,是需要确定你的串口是存在的。似乎所有的Arduino都是使用串口进行下载。所以,如果没有串口的话,是无法下载的。幸好我们的Nucleo板子上是有一个串口的,用这个串口可以临时的欺骗一下Arduino,但也不是长久之计。我们正在寻找一个解决方案。看能不能很好的解决这一个下载问题。$ Z# g  A0 Q! F

) {' `5 \! b3 N
: Z/ C+ y2 j$ l. H/ U+ w
不知道大家对Arduino的感觉如何,前几天我发起了一个帖子,询问大家对Arduino的看法,感觉大家还是对这个东西不是很感兴趣。
9 h  }/ |7 Y5 W' i好了,不多少了,大家还是看图说话吧。过几天之后,完善一下代码,作为一个附件上传上来供大家评测。如果大家感兴趣的话,会写一系列的教程贴,供大家从0开始移植Arduino。

digital

digital

" M+ g( O* M( |" @3 u4 y
* ~3 A- x! T; g$ I5 T- ?/ D5 R3 B9 Q

4 o; E$ t6 e" w                                                              [Arduino移植第二幕:成功移植Serial ]
( d" i8 s! h5 \$ QNucleo中有四个串口,所以这次移植Serial的时候,将这四个串口都写进去了,分别是Serial,Serial2,Serial3,Serial4,直接发送,中断接收。测试之后,四个串口均可用。比较欣喜的是Nucleo自带了USB转串口,很方便我们使用。/ n# k$ t0 E3 w
下面是4个串口的引脚:0 `% l" C+ y9 R: r
PA0<-->USART4_TX       PA1<-->USART4_RX- ?* E/ {; \6 _( n2 A' {" D$ V
PA2<-->USART2_TX       PA3<-->USART2_RX
& S" i0 b& W" ~+ u1 l% Q4 |PA9<-->USART1_TX       PA10<->USART1_RX* E5 r! s3 H& i; Z; f2 ?  |) Z$ \
PC10<->USART3_TX       PC11<->USART3_RX
4 [& [2 M, \" H1 Y# n( D4 V; \, c$ e7 M# I
, x7 j$ Y2 a: J5 a  P4 Q2 O8 a
下面是截图:+ q( S/ c) q6 B! @1 M

. s2 Q( X( |. ~6 ]4 I6 ~" f
" Q: h' D: @5 F( l

Serial。

Serial。
7 M% n# n! K' f- m2 a
2 Q- A, O( p. `
% P$ ?( r: z. ]" V+ W
                                                      【Arduino移植第三幕:成功移植AD转换部分】' z4 F! k6 ~6 w. |  \  B
今晚成功移植analogRead这个函数,能够通过内置的AD读取端口的电平值。不过操作流程和arduino原生的有点出入。如果使用Arduino原生的,貌似是不需要设置IO端口的状态。但是我移植的需要提前将IO端口设置成为ANALOG状态。5 F6 g4 N. r8 c; [' L/ ]4 P

0 g" q1 |* @( c1 a- S在移植的时候也好好地想过这个事情。其实移植的时候完全可以根据Arduino的操作流程来处理。只要在每次analogRead的时候都设置一次IO接口的状态为模拟就行,但是这样毕竟做了很多无用功。特别是当你在一个循环中连续读取模拟口的电平值的时候,每次都设置一个确实是一种浪费。因此我没有这样做。只是在程序开始的地方,我的建议是在setup中设置你需要读取的引脚是ANALOG(使用pinMode函数,在Arduino原生的基础上增加了ANALOG这一状态)。
" b* f; ]4 w+ O. h7 K% T& w
9 I% J  p/ f2 @9 }7 J, |! v下面是我的一张截图。将AD转换通道的数据读入,并且通过串口Serial进行发送。串口监视器中的数据一开始是接在3.3V上面,然后我把线拔下来,悬空了一会,然后把线放到了GND上数据的变化。请看图。
" }/ ~- G7 S8 L0 _# Y8 O! E

analogRead

analogRead

# T- E% S* b) i/ k/ ^( T: y0 s/ w4 _" [' J" \
赞 收藏 3 评论39 发布时间:2015-1-13 13:35

举报

39个回答
qianfan 回答时间:2015-1-14 20:06:12
shaoziyang 发表于 2015-1-13 21:11
- R9 [0 t5 I3 k) E2 B- A支持楼主,等待可用的版本。
1 R* I. E4 h" o( m/ l  a
现在就我的一台电脑,不知道在其他的电脑上能不能行。因为我的编译器是安装版的,我直接将安装版安装后的exe程序拷贝到Arduino中,不知道换成其他的电脑行不行。: B9 u7 ^, w, w. h2 E
现在还缺少电脑做测试。等在其他的电脑上面测试通过之后,就会上传可用的版本。
* e' ^& H7 @. q3 u8 G& |) f5 F! q* Z, b9 d6 b
希望能帮助好好测试一下啊
qianfan 回答时间:2015-1-14 11:13:59
slotg 发表于 2015-1-13 22:39( d- T2 x. Y9 L
关注楼主的发展,我觉得Arduino是一个很伟大的开源板子,让很多人透过简易的编程方式实现自己的想法。 ...

, [  ?# y0 p# F# e主要是他能降低开发的门槛。让更多的人学会使用
shaoziyang 回答时间:2015-1-14 21:18:54
QianFan 发表于 2015-1-14 20:066 }: n6 e* ^8 g/ ?
现在就我的一台电脑,不知道在其他的电脑上能不能行。因为我的编译器是安装版的,我直接将安装版安装后的 ...
& E4 e- h8 L- i
我可以帮助测试。
qianfan 回答时间:2015-1-13 13:38:18
@沐紫 姐,您怎么看?# G( S8 e5 E0 M7 ^/ U( D5 E
shaoziyang 回答时间:2015-1-13 13:44:55
这个不错。MSP430 launchpad也有一个类似Arduino的东西:energia。
qianfan 回答时间:2015-1-13 17:25:27
shaoziyang 发表于 2015-1-13 13:44, W4 g2 @2 F  |6 K9 M
这个不错。MSP430 launchpad也有一个类似Arduino的东西:energia。
" k, B5 R  G) d" `" w6 O
这个是直接使用Arduino的IDE
shaoziyang 回答时间:2015-1-13 21:11:43
QianFan 发表于 2015-1-13 17:25
2 X; k+ t  u. Q( a# t这个是直接使用Arduino的IDE
! o5 q$ u* f& ]: Z
支持楼主,等待可用的版本。
slotg 回答时间:2015-1-13 22:39:25
关注楼主的发展,我觉得Arduino是一个很伟大的开源板子,让很多人透过简易的编程方式实现自己的想法。
mlxy123xy 回答时间:2015-1-14 00:18:34
其实用什么实现不是最重要的,最重要的是有想法,然后用最简单的方式实现了。
qianfan 回答时间:2015-1-14 11:13:29
shaoziyang 发表于 2015-1-13 21:11  h% Q  a' e. N5 l3 L% H% [
支持楼主,等待可用的版本。
7 ^. Y4 q4 d# U3 C1 \
正在努力敲程序中。。。
晓枫VS枯叶 回答时间:2015-1-14 12:26:01
楼主可以发个移植教程!
qianfan 回答时间:2015-1-14 12:28:23
晓枫VS枯叶 发表于 2015-1-14 12:26
/ P; A$ c7 F+ `8 K/ _2 H楼主可以发个移植教程!

& k! Q% ]) D4 `, h0 @等程序写得差不多,显下来着。。。
qianfan 回答时间:2015-1-14 20:02:38
人工置顶,哈哈哈
qianfan 回答时间:2015-1-14 20:07:39
晓枫VS枯叶 发表于 2015-1-14 12:26
1 x) W+ F4 v3 z% m$ N* ^6 d楼主可以发个移植教程!
+ E. i+ D5 {% }# E. ]+ e% y( A9 H
教程是肯定会有有的
MouseCat 回答时间:2015-1-14 20:10:52
全部传上来,资料
123下一页

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版