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

【STM8-SO8】08-STM8L001J3的点灯

[复制链接]
slotg 发布时间:2019-2-19 23:46
本帖最后由 slotg 于 2019-2-19 23:52 编辑 ( K5 k3 [1 W. s, L" Q, i6 V
& H; d$ R% F6 G+ I* q; c, S
测试过 SPI 之后接下来的目标是想熟悉一下 UART 的功能,由于 STM8S001J3 已经摸索了一段时间了,因此有了一个想法就是想改用 STM8L,让 STM8L001J3 与 STM8L050J3 之间透过 UART 的方式互传资料,由于我是使用库函数的方式编写程序,因此直觉上认为 STM8S 与 STM8L 的库函数使用方式应该是相同的,我下载了库 en.stsw-stm8016.zip,新建了一个 STM8L001J3 的工程文件,参考了 【STM8-SO8】01-点灯 的工程文件修改差异之后重新编译后竟然出现了错误!
! |% Z. U; r& L+ Q6 I; U3 q5 V( n
P01.JPG
0 z! e! I9 z& e1 ]7 {; H- K5 z1 ], B5 C& }& Q3 J7 e! Q4 G6 [9 U! i
哦!怎么会有错误呢?查看了库函数说明文件才知道我目前使用的这个 STM8L 库跟原本使用的 STM8S 库 en.stsw-stm8069.zip 是有点不一样的!除了文字会有大小写差异之外,库函数也不是完全相同的。; N! b) U4 D3 O

! b, z! Y4 W' E比如说对于 GPIO 引脚的指定,原本是:
' I9 `( r  C" c( d. G& X#define LED3_GPIO_PINS  (GPIO_PIN_5)
) \$ l% I# H. ^. [' u- J. g6 y- B/ p1 w
而现在是:
' V2 Y8 U4 a" m! G. X#define LED3_GPIO_PINS  (GPIO_Pin_5)
) X" x. \! u" r: t# b: g
* }% ?  T% C- I9 P9 @原本是:7 j7 G8 ^. s; O* S, }! S
GPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST); " {/ R& u# Q1 m* w9 d7 `! `- u

) k4 P* S0 }% t& U现在是:$ e+ K$ q5 X6 ~& Q
GPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);. S  U, w& L" f" x1 T

: v6 ]4 ?: U( r9 w1 j% `在 STM8S 库里使用了 GPIO_WriteReverse() 函数反转 GPIO 的输出状态,而这个函数在 STM8L 库里是没有的,因此改用了 GPIO_ToggleBits() 实现相同的功能。/ @8 ~# R! T+ x7 g
+ e0 l7 V/ K. ?  `( {
main 回圈:4 N' s3 v0 {7 D5 j6 g
  1. void main(void)5 Z  _4 i& B  u3 E2 @$ K
  2. {$ L. L" H) O1 }7 H: b
  3. ! g5 I- _! H0 B* Q0 U, h- w
  4.   GPIO_Init(LED1_GPIO_PORT, (GPIO_Pin_TypeDef)LED1_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);7 }/ n) W/ I, [3 h; q
  5.   GPIO_Init(LED2_GPIO_PORT, (GPIO_Pin_TypeDef)LED2_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);
    $ g0 ?  q  l# W9 j2 m6 n
  6.   GPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);1 H  {! z! j  G4 j* P5 @" R6 G5 D
  7.   
    * p3 d. r0 s! a0 O. S+ m# A/ S
  8.   while (1)
    , ^3 @6 b8 `# c  @1 L+ @
  9.   {) h: O' p  I$ z9 C
  10.     GPIO_ToggleBits(LED1_GPIO_PORT, LED1_GPIO_PINS);
    ) X$ m' R8 D' P
  11.     Delay(0xFFFF);2 [$ q: R0 z8 S2 ~$ B
  12. , G% ~5 U! I3 y9 b+ x/ H
  13.     GPIO_ToggleBits(LED2_GPIO_PORT, LED2_GPIO_PINS);
    ( ]0 B5 ~1 T1 |; X4 |
  14.     Delay(0xFFFF);! [$ a9 `4 D/ h* e0 R% [+ G2 O& q; z
  15. + T4 t. [0 @2 T! l. `
  16.     GPIO_ToggleBits(LED3_GPIO_PORT, LED3_GPIO_PINS);
      o/ W3 m# Y* A0 z/ k* u% j7 M! A
  17.     Delay(0xFFFF);   4 \" T" i- y# {. i" k
  18.   }
    * c3 `1 z4 Y& M- D
  19. }
复制代码
8 S4 o7 J, r1 Y
不太能够理解同样是 STM8 的 MCU 怎么库函数会不一样呢?是不同的库由不同的团队开发,而大家的编程习惯不一样所产生的差异吗?" |  `0 C- c  |9 M4 ^
8 Q& e* |: @0 \; }7 O
; D! W+ N+ c2 @% c7 a0 H
源代码:7 u* s+ g$ }% E: C6 G4 @4 r' [' u. g
B10.rar (1.12 MB, 下载次数: 94)
3 收藏 1 评论8 发布时间:2019-2-19 23:46

举报

8个回答
Kevin_G 回答时间:2019-2-20 09:51:10
关注
xiaoys 回答时间:2019-3-6 22:50:16
楼主你的主函数里不要加5秒延时吗?
slotg 回答时间:2019-3-7 08:35:00
winddancer7 发表于 2019-3-6 22:50
4 W9 \& [7 Y3 b9 u% k% O楼主你的主函数里不要加5秒延时吗?
/ j# f- r! i- ?& b5 B8 M
程序中我没有使用到 pin1 的功能(SWIM),因此没有加上5秒的延时。
Tumizhou 回答时间:2019-11-25 20:15:41
关注
Tumizhou 回答时间:2019-11-25 20:16:57
程序中我没有使用到 pin1 的功能(SWIM),因此没有加上5秒的延时。
- D7 [6 s6 m- c" x5 s" H( K, i
Tumizhou 回答时间:2019-11-25 20:17:17
为啥答复不了
Jackey_Chen-349 回答时间:2020-5-10 14:58:44
关注
yana1999-159243 回答时间:2020-11-19 18:04:12
支持
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版