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

【STM8-SO8】08-STM8L001J3的点灯

[复制链接]
slotg 发布时间:2019-2-19 23:46
本帖最后由 slotg 于 2019-2-19 23:52 编辑 " O6 W8 d& d- ~+ `% |! q" \( x( p

, y" Z* i; S7 n$ F& s6 e测试过 SPI 之后接下来的目标是想熟悉一下 UART 的功能,由于 STM8S001J3 已经摸索了一段时间了,因此有了一个想法就是想改用 STM8L,让 STM8L001J3 与 STM8L050J3 之间透过 UART 的方式互传资料,由于我是使用库函数的方式编写程序,因此直觉上认为 STM8S 与 STM8L 的库函数使用方式应该是相同的,我下载了库 en.stsw-stm8016.zip,新建了一个 STM8L001J3 的工程文件,参考了 【STM8-SO8】01-点灯 的工程文件修改差异之后重新编译后竟然出现了错误!
% }2 U8 w( k) ~  p& o, k3 N+ x, G! U: J% u( O/ D  a
P01.JPG
3 _6 \' E2 X8 B7 B+ t1 e- C+ b. n# u: K2 h/ |2 A
哦!怎么会有错误呢?查看了库函数说明文件才知道我目前使用的这个 STM8L 库跟原本使用的 STM8S 库 en.stsw-stm8069.zip 是有点不一样的!除了文字会有大小写差异之外,库函数也不是完全相同的。3 w( f7 X! T* M6 A

  k- h& m5 J9 @9 ?比如说对于 GPIO 引脚的指定,原本是:
- B+ W4 u4 l# |( v7 d/ t+ Q#define LED3_GPIO_PINS  (GPIO_PIN_5)) Z3 \6 @0 L4 ~# k/ e

0 ]- h- s! T+ @  W  K: {而现在是:
/ `! _' H) h3 O8 N) O1 A" R#define LED3_GPIO_PINS  (GPIO_Pin_5)
* {- ~1 U" O2 P! \
' v; e2 |& H# D原本是:
7 t9 q* @# m9 K, m2 xGPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST); 6 G/ y1 l2 r2 g. z; X

0 D1 f+ O6 k' C" p+ w现在是:; v. L) l+ w2 W9 B
GPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);/ m8 d: K% T8 M' O# [
" m# L1 v4 o* h* I
在 STM8S 库里使用了 GPIO_WriteReverse() 函数反转 GPIO 的输出状态,而这个函数在 STM8L 库里是没有的,因此改用了 GPIO_ToggleBits() 实现相同的功能。1 V: v! I% h9 K! {4 }/ y5 Q( Y
" i2 {9 r2 V5 W6 z# I
main 回圈:
6 l$ y0 Z$ {, `7 v5 ]+ \$ Z
  1. void main(void)
    ! s* ~5 z. e" l* F; u" [
  2. {
    $ P! [0 I, t0 y# A- o; R2 N
  3. ) u) y: ~/ J& d: l! J
  4.   GPIO_Init(LED1_GPIO_PORT, (GPIO_Pin_TypeDef)LED1_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);
    4 n; _. f9 ^/ d: A! y* M
  5.   GPIO_Init(LED2_GPIO_PORT, (GPIO_Pin_TypeDef)LED2_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);
    2 ^+ D, b5 ?4 b+ g* W, @) m# W
  6.   GPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);
    4 O3 _" f0 Q. H, k& b# @
  7.   
    # V* G% v3 O' A/ ]' Y. \8 b# _
  8.   while (1)
    ( h7 x3 O" w1 ^) J" q. B
  9.   {
    % _6 K! Q& b5 z) `  B+ U7 d
  10.     GPIO_ToggleBits(LED1_GPIO_PORT, LED1_GPIO_PINS);( a5 t! Y6 W% D1 _. ?
  11.     Delay(0xFFFF);' ^/ w; I) n' L- X' X. Y' o
  12. $ e3 `6 g- f1 V
  13.     GPIO_ToggleBits(LED2_GPIO_PORT, LED2_GPIO_PINS);# x' O; \0 S2 G& y6 P2 X
  14.     Delay(0xFFFF);  p9 `& A6 d" n
  15. " N$ M4 U; P6 m" u% @/ A
  16.     GPIO_ToggleBits(LED3_GPIO_PORT, LED3_GPIO_PINS);: _, t; ^( ]& q9 I/ q
  17.     Delay(0xFFFF);   
    , ]+ ]2 G& T7 j) ^
  18.   }
    ! D" r* l( W4 i( F; U" g* U5 i
  19. }
复制代码
5 Z* y: N8 `) L# |
不太能够理解同样是 STM8 的 MCU 怎么库函数会不一样呢?是不同的库由不同的团队开发,而大家的编程习惯不一样所产生的差异吗?
9 Y, P7 M$ E# s& f: g& ^( ^2 L& w1 @# Q# P5 O4 H! w
! C  n: N9 R. e! L
源代码:
, ]/ ~( j1 H& J4 E 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) P9 R" N& y8 b
楼主你的主函数里不要加5秒延时吗?
6 ?) D1 g( c& N  e) C$ @; \
程序中我没有使用到 pin1 的功能(SWIM),因此没有加上5秒的延时。
Tumizhou 回答时间:2019-11-25 20:15:41
关注
Tumizhou 回答时间:2019-11-25 20:16:57
程序中我没有使用到 pin1 的功能(SWIM),因此没有加上5秒的延时。
$ X% s! Z6 s1 Z1 }
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 手机版