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

【STM8-SO8】08-STM8L001J3的点灯

[复制链接]
slotg 发布时间:2019-2-19 23:46
本帖最后由 slotg 于 2019-2-19 23:52 编辑
9 E9 @5 }; z8 K
7 s  A/ h) r# E+ j2 f测试过 SPI 之后接下来的目标是想熟悉一下 UART 的功能,由于 STM8S001J3 已经摸索了一段时间了,因此有了一个想法就是想改用 STM8L,让 STM8L001J3 与 STM8L050J3 之间透过 UART 的方式互传资料,由于我是使用库函数的方式编写程序,因此直觉上认为 STM8S 与 STM8L 的库函数使用方式应该是相同的,我下载了库 en.stsw-stm8016.zip,新建了一个 STM8L001J3 的工程文件,参考了 【STM8-SO8】01-点灯 的工程文件修改差异之后重新编译后竟然出现了错误!" p; e( l9 f/ M
8 B& z4 C: v, }# z4 p. l2 f3 n
P01.JPG ; I% }1 Q# l& V# c8 ]4 f

* I% K2 |5 l/ F  ~  a. a哦!怎么会有错误呢?查看了库函数说明文件才知道我目前使用的这个 STM8L 库跟原本使用的 STM8S 库 en.stsw-stm8069.zip 是有点不一样的!除了文字会有大小写差异之外,库函数也不是完全相同的。7 N+ t, q) w6 e/ x. X  \

* P! ?$ x' R' M3 e9 n比如说对于 GPIO 引脚的指定,原本是:; J9 S9 V# S6 f
#define LED3_GPIO_PINS  (GPIO_PIN_5)
& p& I; F! i5 w( C# d  y1 A0 Q+ |* B0 n- V2 m4 A( {- W6 O/ u
而现在是:
# i6 ~7 R6 H' W* s8 ^+ S#define LED3_GPIO_PINS  (GPIO_Pin_5)/ X4 |- _9 f0 \$ Z( x6 s. k

/ P" S% u! E3 I. J  I1 _4 _原本是:7 P; A* ?/ O2 q8 T9 B# N/ p+ o# E
GPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST); 8 y5 \8 h  W3 b& l

3 \% ?$ v" O! w8 B现在是:
3 x- U) {1 n6 ~2 LGPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);3 k3 V: y# G% a# N
  p1 s& z7 E* D. z+ m
在 STM8S 库里使用了 GPIO_WriteReverse() 函数反转 GPIO 的输出状态,而这个函数在 STM8L 库里是没有的,因此改用了 GPIO_ToggleBits() 实现相同的功能。
( J8 F( I8 s5 T: Z; {1 F' i& [6 z3 n
main 回圈:
7 Z$ [( k* [+ E- b5 W3 M# E& V, Z
  1. void main(void)' e+ P8 ~. T9 c, y& K) I- H
  2. {
    " Q4 J" _1 k$ t  Q& ]
  3. - m8 w( \: h: ]
  4.   GPIO_Init(LED1_GPIO_PORT, (GPIO_Pin_TypeDef)LED1_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);) i7 Z: Z/ T) t$ \
  5.   GPIO_Init(LED2_GPIO_PORT, (GPIO_Pin_TypeDef)LED2_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);
    ' |9 V- }8 u: H2 ~* m# V6 A! @; Y
  6.   GPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);2 `- n) {8 w7 e2 W0 |: M/ j9 [2 a
  7.     T; I, }+ ?3 y* B3 ?+ O4 @
  8.   while (1)& `6 L  _% d# e; S
  9.   {3 l* I% g+ N, p
  10.     GPIO_ToggleBits(LED1_GPIO_PORT, LED1_GPIO_PINS);; M" w+ R# A; Y) F9 F% g  W
  11.     Delay(0xFFFF);
    . H5 C6 F* K; I) S
  12. , |( [3 n0 Z( m* m  T
  13.     GPIO_ToggleBits(LED2_GPIO_PORT, LED2_GPIO_PINS);
      i- Z$ f5 R  k& `3 }! F
  14.     Delay(0xFFFF);
    7 o: a/ w" l$ e4 C/ v: r

  15. ( B: L2 P- S9 A2 k  p( ]' G
  16.     GPIO_ToggleBits(LED3_GPIO_PORT, LED3_GPIO_PINS);
    8 V+ n8 c7 y& o3 }% c& [
  17.     Delay(0xFFFF);   + j5 J2 t0 n, k$ X2 e
  18.   }& t( r/ s% A% c# Z$ a" }/ J
  19. }
复制代码

) C) Y4 B! c! y  K+ _7 T不太能够理解同样是 STM8 的 MCU 怎么库函数会不一样呢?是不同的库由不同的团队开发,而大家的编程习惯不一样所产生的差异吗?
$ @7 t- Q4 d* V( }- r. q9 w2 T$ R0 M4 s, A
# b9 J0 O$ T) s; a) I
源代码:8 R7 @3 |* H: o2 v  k. Z
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
: K" Q5 b% ~' F' r. d楼主你的主函数里不要加5秒延时吗?
$ y+ B% _  |/ q: W  |
程序中我没有使用到 pin1 的功能(SWIM),因此没有加上5秒的延时。
Tumizhou 回答时间:2019-11-25 20:15:41
关注
Tumizhou 回答时间:2019-11-25 20:16:57
程序中我没有使用到 pin1 的功能(SWIM),因此没有加上5秒的延时。
! C9 R* h9 C, z+ }1 z8 ^5 E
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管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版