找回密码
 注册
关于网站域名变更的通知
查看: 188|回复: 3
打印 上一主题 下一主题

STC32G单片机编码器模式

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-21 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
有没人测试过STC32G单片机的编码器模式。# @0 G4 t% d3 J+ J, t6 k( t
1.例程 中 P1口选择P1.0 ,P1.2 ,STC32G 没有P1.2   。这么郁闷的事也有。
& f4 C- C9 ~7 }- X, ~  t8 z2.换到P2 口也没反应。% Y& D, J- \1 f. @5 W9 r1 b
3.找到STC8H的编码器历程也不能用。
/ L6 B3 Y0 I! @# v( L4 p# h0 D& @6 K% D# s
下面是STC8H编码器模式历程:! O3 |" R. l/ M7 Q& D/ o
#include "reg51.h"
  D  |8 B- d. D#include "intrins.h"9 i# H2 ]" L6 ]/ `1 V! F9 W
4 k2 C* ^0 s8 c8 A% W9 G: _& U' H
typedef struct TIM1_struct
0 g  J. {; n: d{7 D1 i" E9 K, X+ w0 ^2 K
    volatile unsigned char CR1;     /*!< control register 1 */) z' P* ~# q" h6 R0 i: I% R0 F7 V, E
    volatile unsigned char CR2;     /*!< control register 2 */
1 X6 b, f; ]8 y/ U$ e    volatile unsigned char SMCR;    /*!< Synchro mode control register */* [- z  w: E( O: A, Y  k, i' A6 k
    volatile unsigned char ETR;     /*!< external trigger register */
6 Y# }& J2 _! L5 F! Q/ [/ Q    volatile unsigned char IER;     /*!< interrupt enable register*/
; Q' _1 }! ]. Y    volatile unsigned char SR1;     /*!< status register 1 */
5 p6 s1 ~! u. ]7 Y0 w    volatile unsigned char SR2;     /*!< status register 2 */
" i$ n. |( q4 `    volatile unsigned char EGR;     /*!< event generation register */; R- C; Y2 W# j4 c
    volatile unsigned char CCMR1;   /*!< CC mode register 1 */5 t( h& n. ?% l+ F
    volatile unsigned char CCMR2;   /*!< CC mode register 2 */
7 a# v) N& {0 C8 K- H; X    volatile unsigned char CCMR3;   /*!< CC mode register 3 */
8 @  x  E: U# u% a7 C4 A    volatile unsigned char CCMR4;   /*!< CC mode register 4 */7 `" z. P4 q* ]. D4 ]  q/ z
    volatile unsigned char CCER1;   /*!< CC enable register 1 */
8 }4 y' ^1 O8 m9 }7 x$ d    volatile unsigned char CCER2;   /*!< CC enable register 2 */
# R* k' ]1 v/ _1 Q2 w    volatile unsigned char CNTRH;   /*!< counter high */; ^# h9 E" y7 p* |
    volatile unsigned char CNTRL;   /*!< counter low */2 C3 E' G9 }& Y! a8 V
    volatile unsigned char PSCRH;   /*!< prescaler high */
, q9 g0 S+ |: X    volatile unsigned char PSCRL;   /*!< prescaler low */
: \6 u- |3 }' K+ P) ~5 P, D" \4 f    volatile unsigned char ARRH;    /*!< auto-reload register high */) G% f- u3 h. ]
    volatile unsigned char ARRL;    /*!< auto-reload register low */
7 L/ p( k9 e1 X8 z    volatile unsigned char RCR;     /*!< Repetition Counter register */
& o" s, B$ I0 m1 i) n    volatile unsigned char CCR1H;   /*!< capture/compare register 1 high */
. A: a: x8 W  I# ?' q0 W    volatile unsigned char CCR1L;   /*!< capture/compare register 1 low */' p+ ^) ^7 q; F* n
    volatile unsigned char CCR2H;   /*!< capture/compare register 2 high */( e6 B0 L) Z  Q; z3 ~. A# p
    volatile unsigned char CCR2L;   /*!< capture/compare register 2 low */4 A* G; l9 q0 n: G, n7 E
    volatile unsigned char CCR3H;   /*!< capture/compare register 3 high */
  O3 ]2 d0 \) r: T9 Y- F4 t    volatile unsigned char CCR3L;   /*!< capture/compare register 3 low */; I- V7 m4 _* i2 _- Q
    volatile unsigned char CCR4H;   /*!< capture/compare register 3 high */
/ A" v9 D3 ]7 l3 H3 o    volatile unsigned char CCR4L;   /*!< capture/compare register 3 low */" C2 w* w/ o( X  q, x2 A& |
    volatile unsigned char BKR;     /*!< Break Register */
& k1 Z5 Z% Z) S. L, ]    volatile unsigned char DTR;     /*!< dead-time register */
  t- \- ]0 {- w- m    volatile unsigned char OISR;    /*!< Output idle register */9 p! l! ?2 m: I# Z$ t
}TIM1_TypeDef;; K1 ]9 _/ o) ^% R- {# d1 ^

9 T- R# ~- r& U7 e- C' }4 y#define TIM1_BaseAddress    0xFEC0; v( q* G% \) \# ~' ~
5 J- `6 k' ?6 G3 Y1 A( Y1 F4 ~$ ^# q
#define TIM1        ((TIM1_TypeDef xdata*)TIM1_BaseAddress)
; U0 C! M$ w0 w( L; x#define PWMA_ENO    (*(unsigned char volatile xdata *)0xFEB1)6 a- H- ?* d; R
#define PWMA_PS     (*(unsigned char volatile xdata *)0xFEB2)
9 K9 z/ A8 _# F4 |* s( E
" b; X  X( `. A8 a2 S; i* y: Z7 `sfr     P0M0    =   0x94;
- q7 e" I, Z6 A9 }sfr     P0M1    =   0x93;
; t9 A4 d9 d4 v/ ]sfr     P1M0    =   0x92;! ?/ v2 o9 j+ U' B
sfr     P1M1    =   0x91;5 o8 R1 y$ o0 f0 D* n
sfr     P_SW2   =   0xba;' Y+ C' m3 T$ F9 t8 Y! Q
1 r% [5 @* x6 {5 C
sbit    P03     =   P0^3;* r) u& X1 r6 S! u  e" u
6 q: k8 Z" ^! S
unsigned char cnt_H, cnt_L;
. F. s7 k1 ]1 o0 @+ R/ s, N2 N1 ~7 [
, N0 T. N) @3 }) Tvoid main(void)- s. D" t; o3 `, c
{, f) \2 I: N7 c) k1 i0 X* ]' L
    P_SW2 = 0x80;& N3 d5 ?" {- o! ]( T. \+ h
* w7 M2 I  `, R) [# Q( U" E
    P1M1 = 0x0f;+ @) }9 v1 `- Z6 e. D5 U
    P1M0 = 0x00;0 Y+ a$ ]9 G) E$ a* X" c

, {6 X0 G1 v; ?3 g8 Q  A% U' S    PWMA_ENO = 0x00;                            //配置成TRGI 的pin需关掉ENO对应bit并配成input
' x- U( n& Q1 K: o1 [; c: h2 {    PWMA_PS = 0x00;                             //00WM at P1! F) M1 d6 w% N6 l# K2 k
9 [$ Z1 @# N0 P9 J- ^% ~
    TIM1-> PSCRH = 0x00;                        //预分频寄存器
5 ]  R& ~$ z/ _' |0 l/ h! m- O4 u( C    TIM1-> PSCRL = 0x00;
$ B0 K! V. A: m/ r( _1 _4 B1 u# j( i" s8 k' v; x/ d
    TIM1-> CCMR1  = 0x21;                       //通道模式配置为输入,接编码器,滤波器4时钟
* I& z2 I# r& R5 l* Y    TIM1-> CCMR2  = 0x21;                       //通道模式配置为输入,接编码器,滤波器4时钟
9 T" e$ H; z4 b2 G; C6 O; Z8 b4 j5 w; w. X) G
    TIM1-> SMCR   = 0x03;                       //编码器模式3! a; W& J& u& i' P# a+ s  H

  A; y+ h5 o- {# w0 {    TIM1-> CCER1  = 0x55;                       //配置通道使能和极性
& S) M2 g; U; D. Z& Y    TIM1-> CCER2  = 0x55;                       //配置通道使能和极性
( n0 y: ]$ L4 E. Z  m  l
4 w, h4 U& E! l5 I; `( [2 L7 p    TIM1-> IER  = 0x02;                         //使能中断: W( \' _9 O' e! o$ q+ I; W/ p

$ x+ p& J' G3 V! S! e    TIM1-> CR1 |= 0x01;                         //使能计数器6 U( A' I, k+ X! C

9 n0 q! Z. m% ]  u    EA = 1;7 h, x3 z. }7 A! L3 n$ R. A! @
+ Z9 s. n  o7 w% L
    while (1);% D' ?5 A! W, Y9 p/ B6 |
}/ c! p/ G4 k/ U5 `& f

5 Z' o$ f9 D: X( \/******************** PWM中断读编码器计数值**************************// v8 e! D5 a! ^; R
void PWMA_ISR() interrupt 26
5 ~# M0 v6 Y. p' t" O7 d% t7 ^# a{8 K$ W; N1 F7 P7 Y0 ^0 x: R2 e, Y
    if (TIM1->SR1 & 0X02): T. z) c9 A- V9 G
    {" J4 U) f: ~" \# m7 i
        P03 = ~P03;
) }/ n3 {4 L) Z! C5 ^0 l        cnt_H = TIM1->CCR1H;8 T  a" U. L! x! e! }
        cnt_L = TIM1->CCR1L;: e( W+ a" J" S; {5 Q0 M7 y, B, k" R4 l
        TIM1->SR1 &= ~0X02;& `* \9 \9 x/ H; b* \
    }
1 N" }  `% q% r; L}" G2 r: H, Z0 O8 u* Z. w2 t

该用户从未签到

2#
发表于 2022-6-21 10:04 | 只看该作者
学习学习,||ヽ(* ̄▽ ̄*)ノミ|Ю

该用户从未签到

3#
发表于 2022-6-21 14:23 | 只看该作者
学习,||ヽ(* ̄▽ ̄*)ノミ|Ю

该用户从未签到

4#
发表于 2022-6-21 14:48 | 只看该作者
||ヽ(* ̄▽ ̄*)ノミ|Ю
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 23:05 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表