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

【STM8-SO8】08-STM8L001J3的点灯

[复制链接]
slotg 发布时间:2019-2-19 23:46
本帖最后由 slotg 于 2019-2-19 23:52 编辑
) b  [! S: ]+ Q2 U. Q# F- A; A" p4 R6 {
测试过 SPI 之后接下来的目标是想熟悉一下 UART 的功能,由于 STM8S001J3 已经摸索了一段时间了,因此有了一个想法就是想改用 STM8L,让 STM8L001J3 与 STM8L050J3 之间透过 UART 的方式互传资料,由于我是使用库函数的方式编写程序,因此直觉上认为 STM8S 与 STM8L 的库函数使用方式应该是相同的,我下载了库 en.stsw-stm8016.zip,新建了一个 STM8L001J3 的工程文件,参考了 【STM8-SO8】01-点灯 的工程文件修改差异之后重新编译后竟然出现了错误!% O9 e9 O2 H( e8 H5 `
: I. Y* G; m5 j! S
P01.JPG " g6 E3 {/ \! @$ ^
. ]4 Y; a6 r& p) G+ N) U) v% B
哦!怎么会有错误呢?查看了库函数说明文件才知道我目前使用的这个 STM8L 库跟原本使用的 STM8S 库 en.stsw-stm8069.zip 是有点不一样的!除了文字会有大小写差异之外,库函数也不是完全相同的。
* H' G' w. Z! ]9 S9 Q0 Y' c) n6 O# V2 Q. c* G8 l
比如说对于 GPIO 引脚的指定,原本是:
& V% w! T" w$ \! V: V#define LED3_GPIO_PINS  (GPIO_PIN_5)$ ?4 ?; I* C" K1 I% P
) _- P) a/ r  `* C
而现在是:
' `. _5 t5 N9 ]) Q' `#define LED3_GPIO_PINS  (GPIO_Pin_5)
& O5 D4 M9 J' x, c1 v9 ]* j/ d3 C
原本是:# {' c5 F& |4 U; ^6 l
GPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST); % k2 l3 K6 N4 ^* B/ L
  d) }6 m0 `- b; V6 T6 k8 Q
现在是:. v2 o  r: E3 i! e5 q
GPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);+ s: S' v) I# K: b2 i3 I/ U
4 r0 Z3 d* M. ^
在 STM8S 库里使用了 GPIO_WriteReverse() 函数反转 GPIO 的输出状态,而这个函数在 STM8L 库里是没有的,因此改用了 GPIO_ToggleBits() 实现相同的功能。
% t3 u6 u& T5 Z9 G3 u/ Q* G
" V$ I$ n- }( u7 `7 T- Y6 a6 Dmain 回圈:
2 d! \$ m7 }8 w" b7 `6 h# L
  1. void main(void)
    ( N0 \- ]. }( D/ P6 A' K
  2. {
    5 i0 V; R, C# R* E

  3. $ Y4 R" u/ K6 i! m# u: t( W; T
  4.   GPIO_Init(LED1_GPIO_PORT, (GPIO_Pin_TypeDef)LED1_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);* o) n$ J$ y# k' B
  5.   GPIO_Init(LED2_GPIO_PORT, (GPIO_Pin_TypeDef)LED2_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);+ F) K1 H. f# c' ?/ T
  6.   GPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);
    : k2 l  {* c5 ]0 G
  7.   
    ' _) l; _% q/ b1 M
  8.   while (1)
    4 @( J) A4 q) E0 N! z9 |: o: F
  9.   {
    3 T7 k& X( N' X6 n
  10.     GPIO_ToggleBits(LED1_GPIO_PORT, LED1_GPIO_PINS);
    9 {, t1 x  o0 h5 O$ U+ F
  11.     Delay(0xFFFF);3 ~5 K' h. |% J4 J$ ~
  12. , L+ e/ N4 a$ I, j1 B
  13.     GPIO_ToggleBits(LED2_GPIO_PORT, LED2_GPIO_PINS);3 u( ]# n2 m$ Z7 e# ?
  14.     Delay(0xFFFF);( t' E. q! V' j8 E! `

  15. ; @; c$ L( l/ A- A* m
  16.     GPIO_ToggleBits(LED3_GPIO_PORT, LED3_GPIO_PINS);
    2 h* f* W  g8 X
  17.     Delay(0xFFFF);   
    . a9 y$ r; T$ D' D; J: O, ^- H1 j
  18.   }
    6 B; i& |. E* e% r  f
  19. }
复制代码
0 {% ?# u( Q/ V/ K0 B0 N
不太能够理解同样是 STM8 的 MCU 怎么库函数会不一样呢?是不同的库由不同的团队开发,而大家的编程习惯不一样所产生的差异吗?
& m% Y- `5 x& b. \1 ]! x. E0 k& h8 Y. [5 P2 @
# A4 N4 y" H7 Z2 m8 D# w
源代码:5 `  a% P9 ^: p
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) g! A  V% C" Y, i
楼主你的主函数里不要加5秒延时吗?
1 r: t% ]% K6 j* i
程序中我没有使用到 pin1 的功能(SWIM),因此没有加上5秒的延时。
Tumizhou 回答时间:2019-11-25 20:15:41
关注
Tumizhou 回答时间:2019-11-25 20:16:57
程序中我没有使用到 pin1 的功能(SWIM),因此没有加上5秒的延时。- i) h7 i- t. U+ v1 K
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 手机版