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

【STM8-SO8-DISCO】+ (1)基本定时器四中点灯

[复制链接]
damiaa 发布时间:2019-1-22 11:10
本帖最后由 damiaa 于 2019-1-23 15:42 编辑
3 m  J' K$ O) s; ?' K$ L8 v/ [+ `
3 t& F2 g! Q$ C  Z5 C+ l' C: Z$ Q【STM8-SO8-DISCO】+ 基本定时器四中点灯  
, Y; z+ L" Z* o) Y) ^* l小8芯的STM8S001 只有TIM1,2,4。 TIM4为基本定时器。只有些基本功能。用它最好理解了。
' T0 q6 o1 r1 O1 N; M- S先看一下原理图:/ \' N% B- w; r5 |% g& C7 {: F1 F) J

! R/ O8 C9 o+ I, o: ^( `6 u
9 d3 `! J, t7 \
# n) @3 J4 M$ @: ?* f* u QQ图片20190122164711.png / m, m. Q3 E$ [5 y% W
IO口1 PA1/PD6$ _/ x6 @% K7 k2 g
IO口5 PA3/PB5  ~2 l/ B$ F; _6 U
IO口6 PB4
& s" F  i4 E$ W* a1 o7 Q/ ZIO口7 PC3/PC4/PC5 上面四个IO口可以用
' |7 @) S/ ^$ wIO口8 SWID不能占用2 s2 C& T3 X8 M& V& S
IO口7用到按键了,IO口5用到LED1了。/ M% u4 v. r: i- @' n! E3 d
可以根据情况使用。6 u. G- [3 C% L0 w, ~" p8 X

7 N  _. n1 Y. g( \6 S* a下面开始* |% g4 Y% ^9 A$ m! L
, X4 @; ?$ ?5 ~, Q
6 T8 u& b7 [7 S, [/ S9 \
1,安装IAR开发环境。$ m( r( q7 c9 A
2,申请一个免费的lisensee。
. z/ u: V/ G4 _3 \2 p6 W( ~; u& H3,建立stm8s001test目录,在它下面建立:project,user,libraries三个目录。
- J( ?4 ?' _8 S" J( U QQ图片20190122110421.png
$ }3 w+ ~/ r9 y6 [6 {7 a7 X& _! k* z* l* y
4,拷贝一个STM8的工程模板到project目录。% q1 I, g3 N; b( Z$ {& Q; B
5,拷贝main.c stm8s_conf.h stm8s_it.h stm8s_it.c到user目录。! M* B" L+ V* ~
6,拷贝库文件到libraries目录。
' v% V$ S1 G* Q0 O* {, u$ u* \& h7 V7,加入文件到工程。(如果以前有删除后加入): QQ图片20190122110700.png
' _5 t+ Q% K3 y" m6 ?8,配置头文件路径。) \$ M1 s& U0 z  \3 u& L" O
QQ图片20190122142628.png
, J3 |8 V+ B' \# h# g9,main.c 加入$ h7 r0 L  b/ u$ W* L1 h
  1. /* Includes ------------------------------------------------------------------*/
    9 m* g1 U+ |( \1 u" x# K6 M  @& H% }2 j
  2. #include "stm8s.h"/ h) |1 l& x9 g. f- V' S$ |' E' s' R
  3. #define LED_GPIO_PORT  (GPIOA)/ [0 d* W  L3 w+ ^1 d
  4. #define LED_GPIO_PINS  (GPIO_PIN_3)  b  I$ x* R) m/ I8 m; j" t
  5. #define TIM4_PERIOD       1248 x3 L6 \" V$ I( Y8 m- q
  6. void Delay (uint16_t nCount);8 H7 `$ O2 U1 x9 _) `2 ?+ B# x
  7. static void TIM4_Config(void);
    8 C% m" B- c- ?1 v( b$ k+ G. b. H
  8. void LED1_Toggle();) K# A: T% ~5 ]( T1 d; ~% q
  9. void main(void){0 s/ I4 y4 o% W1 U/ f
  10.   /* Initialize I/Os in Output Mode */
    ) ^, [! V5 L9 h
  11.   GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST);
    5 {; B. @4 V3 t& t, z5 t
  12. /* TIM4 configuration -----------------------------------------*/
    % z) J  R* }4 v/ Y0 T6 F4 [
  13.   TIM4_Config(); * p* P9 g: |4 p
  14.   while (1)6 k  ~' i/ }* D: _
  15.   {
    2 y  Z* A, x: q8 Y  D' i
  16.   }
    # f* Q4 N" B2 {$ X2 D5 U" Y" U* r$ K+ w
  17. }
    + i. i8 V0 @' X
  18. void Delay(uint16_t nCount){
    - }- x  ^  P6 N  H  M
  19.   while (nCount != 0){   nCount--; }1 d+ B, H" E1 I! c; D% O
  20. }
    4 Q4 _0 G' O/ @. }' o
  21. static void TIM4_Config(void)0 E( A# i; b6 }) F+ G% U+ b3 `$ S5 W
  22. {
    + Z0 {6 f1 y2 a4 `7 B$ I- S# o
  23.   /* TIM4 configuration:
    9 b8 Y6 N$ S) n1 `2 M* ?
  24.    - TIM4CLK is set to 16 MHz, the TIM4 Prescaler is equal to 128 so the TIM1 counter
    % M. q+ L; |7 p- }) D5 F6 W- g
  25.    clock used is 16 MHz / 128 = 125 000 Hz
    6 w# f' C7 r- d* d& L2 ]/ c& @: h' J( ^
  26.   - With 125 000 Hz we can generate time base:
    5 y6 i. A1 k, ~# n
  27.       max time base is 2.048 ms if TIM4_PERIOD = 255 --> (255 + 1) / 125000 = 2.048 ms6 H9 p8 k2 x- ?3 e9 h8 _" z
  28.       min time base is 0.016 ms if TIM4_PERIOD = 1   --> (  1 + 1) / 125000 = 0.016 ms6 P0 ]7 r8 q" H, h
  29.   - In this example we need to generate a time base equal to 1 ms
    ' r( n2 O! [, T' S/ U  @/ k
  30.    so TIM4_PERIOD = (0.001 * 125000 - 1) = 124 */& D0 y3 i( v0 m  o
  31.   /* Time base configuration */# _; B; p& g" d/ v! a; s, r
  32.   TIM4_TimeBaseInit(TIM4_PRESCALER_128, TIM4_PERIOD);
    + a% Z; N: H9 D6 M" ^; g
  33.   /* Clear TIM4 update flag */
    - G5 X( L/ C0 ?4 S- U* g8 k* K+ q
  34.   TIM4_ClearFlag(TIM4_FLAG_UPDATE);
    9 K* u* N* ~$ n5 Y' C
  35.   /* Enable update interrupt */  G9 \! `* |+ D0 M$ s: {( [
  36.   TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
    9 q& Z/ y8 ~7 U, g
  37.   /* enable interrupts */( j4 S9 M  p" S1 m& T) u
  38.   enableInterrupts();
    4 \4 Q$ j( n" S% ?
  39.   /* Enable TIM4 */9 k0 R; l. j6 x% I
  40.   TIM4_Cmd(ENABLE);  e* c1 r( D( `+ l9 d  J
  41. }# ~  Y0 [; P7 [% h$ T. _
  42. void LED1_Toggle(){" r8 z* l( r6 E/ R& t# j% a& [! J
  43.    GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);
    & K& k3 C* {4 n$ B9 B
  44. }
复制代码
stm8s_it.c加入& E2 {/ j/ `; u) M5 L" I
  1. extern void LED1_Toggle();' C5 ?7 O" A8 {& j
  2. ...) K; e. {( w1 p, n( d6 b  h
  3. ...
    + f: X0 B; O1 o1 e$ r
  4. INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)
    ; l. [" G1 l0 L, i& P9 y" {
  5. {8 Z! S& O' w: \0 y( e* a; y
  6.   /* In order to detect unexpected events during development,2 T9 }" P" N* B3 Q& Z5 J' E
  7.      it is recommended to set a breakpoint on the following instruction.( y  Q8 M' B5 ?3 k
  8.   */
    . H6 p; J: u( B1 q, ]
  9.   static uint16_t tims=0;8 s' A) x9 K# S6 E$ p( A* \
  10.   tims++;. ^6 `' B5 U; _0 {/ A3 y' k- ?
  11.   if(tims >1000)
      i4 O  q$ }+ p" q2 p8 V
  12.   {
    ! A. b  {" [) c
  13.     tims =0;
    4 Q1 `- l9 g9 ?+ C
  14.     LED1_Toggle();
    7 L0 V& R6 n; C9 Y+ R6 _/ O
  15.   }1 S, H' L  j% {! J, N
  16. }
复制代码
% Y5 Q$ {, Q- E3 Q! U) P, V5 U9 v" H
10,编译调试:
3 q2 t' l* S- n, Z$ |7 a$ q3 t! b 微信图片_20190122102947.jpg
* X7 ]# B! y: ^6 M0 W0 p& @ 微信图片_20190122102956.jpg
* d! n, g$ [1 ?: B/ R, ?+ I+ Z- F11,文件:3 ^) k8 e$ n' q) u7 w1 U% e+ j
stm8s001test.zip (2.91 MB, 下载次数: 5)
收藏 1 评论4 发布时间:2019-1-22 11:10

举报

4个回答
qiangtech 回答时间:2019-1-22 14:58:52
下次申请到开发板了来试试。
damiaa 回答时间:2019-1-22 15:38:15
qiangtech 发表于 2019-1-22 14:58/ O3 _; e9 b5 u$ o" d% D0 K
下次申请到开发板了来试试。

6 r: Q. `7 E4 z" ~, @5 I 好 希望能申请到。
yuandm1 回答时间:2020-12-10 17:10:44
楼主你好,我使用的STM8L001J3,按照您的例程,测试不能进入定时器中断呢,请指点,谢谢
damiaa 回答时间:2021-1-12 09:27:14
yuandm1 发表于 2020-12-10 17:10- a7 v& A, y2 v0 i
楼主你好,我使用的STM8L001J3,按照您的例程,测试不能进入定时器中断呢,请指点,谢谢 ...

% c$ D% d# T8 k我这个是STM8S001 。STM8L001J3是不是要换一下几个文件?没试过。留意要换的 stm8s_conf.h stm8s_it.h stm8s_it.c 还有库。或者自己找一下。不记得了。你自己看看吧。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版