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

STC32G单片机编码器模式

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
有没人测试过STC32G单片机的编码器模式。: Q* a2 \1 K$ U1 P
1.例程 中 P1口选择P1.0 ,P1.2 ,STC32G 没有P1.2   。这么郁闷的事也有。# J/ ~. j, X8 J. W
2.换到P2 口也没反应。
+ @% k$ n1 L; N; F- P9 t% i3 ]+ W3.找到STC8H的编码器历程也不能用。! t8 R$ k2 u3 l  Z& N

  x8 a1 [+ B* |  E! E2 e- V下面是STC8H编码器模式历程:
  K$ j! i5 }0 X6 ?8 Q#include "reg51.h"0 m( {8 A5 d" z
#include "intrins.h"
: C( u1 J3 y1 @, x7 C) W. }+ W
( `2 M! u& i+ R8 ?' W. S, \typedef struct TIM1_struct; {( ~8 m" r+ h* H
{. |! R! S: m. M7 N3 A
    volatile unsigned char CR1;     /*!< control register 1 */
3 }+ L; y  L; c' u1 _* l    volatile unsigned char CR2;     /*!< control register 2 */! z3 K8 Z* h6 Q2 A' q
    volatile unsigned char SMCR;    /*!< Synchro mode control register */
9 V' x! a3 U2 w. d$ _% k    volatile unsigned char ETR;     /*!< external trigger register */) O. ^7 j% H9 N
    volatile unsigned char IER;     /*!< interrupt enable register*/
0 \8 N" U' `* s) n2 e    volatile unsigned char SR1;     /*!< status register 1 */  B! o: G4 O# @0 q. [
    volatile unsigned char SR2;     /*!< status register 2 */' M7 X: c+ p7 K" D/ t: C
    volatile unsigned char EGR;     /*!< event generation register */
# \8 p$ {, r" C    volatile unsigned char CCMR1;   /*!< CC mode register 1 */
8 x8 `" K7 y7 o" J1 C    volatile unsigned char CCMR2;   /*!< CC mode register 2 */
1 H) V  |2 H# P9 m, w    volatile unsigned char CCMR3;   /*!< CC mode register 3 */9 @0 i$ L3 n. G6 g- r/ `
    volatile unsigned char CCMR4;   /*!< CC mode register 4 */
/ Z5 t+ P2 k6 j    volatile unsigned char CCER1;   /*!< CC enable register 1 */
6 j/ R& u1 z1 L# H) ?    volatile unsigned char CCER2;   /*!< CC enable register 2 */
/ u' D, q7 n$ \    volatile unsigned char CNTRH;   /*!< counter high */
2 b" H# A! d* R5 C, s9 G  h    volatile unsigned char CNTRL;   /*!< counter low */8 y) N( V. N* I: z% h/ @
    volatile unsigned char PSCRH;   /*!< prescaler high *// H. J5 F" w' W( u2 r; b
    volatile unsigned char PSCRL;   /*!< prescaler low */
4 w; ^4 L3 C) U" }7 f/ S    volatile unsigned char ARRH;    /*!< auto-reload register high */7 f( g9 V5 O8 F% T. ~# N
    volatile unsigned char ARRL;    /*!< auto-reload register low */
& R6 y* I% R. q. g    volatile unsigned char RCR;     /*!< Repetition Counter register */
- A9 O/ s0 a0 D    volatile unsigned char CCR1H;   /*!< capture/compare register 1 high */
/ Q; _$ ~- R, `, C! M. t# P    volatile unsigned char CCR1L;   /*!< capture/compare register 1 low */& Y8 b* B% U1 ^/ m/ N8 C
    volatile unsigned char CCR2H;   /*!< capture/compare register 2 high */
" g6 G; h+ {/ Y( O, ?    volatile unsigned char CCR2L;   /*!< capture/compare register 2 low */
  Q- q$ W5 C( q( k/ J    volatile unsigned char CCR3H;   /*!< capture/compare register 3 high */
) A* l8 \  m1 y0 t/ ~    volatile unsigned char CCR3L;   /*!< capture/compare register 3 low */
" ~/ f2 _; L' ^, |3 L; N6 H    volatile unsigned char CCR4H;   /*!< capture/compare register 3 high */" w* f1 u( {6 X, Z
    volatile unsigned char CCR4L;   /*!< capture/compare register 3 low */
1 }! L$ D  O- T" f6 h! X6 V- H8 G    volatile unsigned char BKR;     /*!< Break Register */' j% b2 ^6 S5 D* }) P3 H7 o7 l
    volatile unsigned char DTR;     /*!< dead-time register */
* u$ R- e" u  I8 h    volatile unsigned char OISR;    /*!< Output idle register */
8 a  w, O2 Y; ^3 Q9 t( _7 u}TIM1_TypeDef;
2 Y$ b" n; d& Q; C" D) F, N% P) k0 J$ h' u( t' |
#define TIM1_BaseAddress    0xFEC0  g% R# B6 ]+ f$ z" R) O# z
0 e9 `2 z1 R6 O0 s( l
#define TIM1        ((TIM1_TypeDef xdata*)TIM1_BaseAddress)
: C. Q5 x$ B1 l) K# q% Y+ K6 Z# e0 }/ N#define PWMA_ENO    (*(unsigned char volatile xdata *)0xFEB1)
1 n6 K/ c; I; P' ?#define PWMA_PS     (*(unsigned char volatile xdata *)0xFEB2)6 Y  X. M* ^# t  y1 E) O
* f. h5 x+ A9 S% _- [6 v/ O- J+ N
sfr     P0M0    =   0x94;- U" g3 b; V- Z% R
sfr     P0M1    =   0x93;
% |$ b3 l, C4 ^2 o) S4 msfr     P1M0    =   0x92;
7 x& F) T9 W7 R. i& S' Jsfr     P1M1    =   0x91;' c2 P( R# t6 Z: B3 C& z1 m
sfr     P_SW2   =   0xba;
1 E9 `4 J0 P7 V4 H& L
6 D: a7 D+ I- nsbit    P03     =   P0^3;
7 q1 {) j4 t+ ]( A& w3 }) V
5 w( {+ U- Y1 i' Q7 \& @unsigned char cnt_H, cnt_L;
1 m# B+ P& n. `+ {% f1 `( m7 |
! D. l- w, W6 f1 avoid main(void)
: O7 n4 b2 \* F5 C0 {1 P( n. K{9 s, A1 X; @2 X+ G9 M( h- _* ]( K/ o
    P_SW2 = 0x80;3 B% N+ P: f+ M, H) V# N" O
8 u7 a0 R3 g# |+ [7 t8 l! L
    P1M1 = 0x0f;# U" K5 N  a$ G; z8 U( {
    P1M0 = 0x00;1 K; r1 i: ^) S6 [

1 K, Q1 Y" p; y2 T- t" K0 z    PWMA_ENO = 0x00;                            //配置成TRGI 的pin需关掉ENO对应bit并配成input
) v8 C3 N: ]* l( u" E3 a0 f" }$ m    PWMA_PS = 0x00;                             //00WM at P13 Y( N6 r& d( ~7 K0 j
. z3 L' |8 d0 D
    TIM1-> PSCRH = 0x00;                        //预分频寄存器
; P' b% |+ w# C    TIM1-> PSCRL = 0x00;
' `6 v9 m! J4 ~. C. Y
& T! R2 f1 c2 V2 n    TIM1-> CCMR1  = 0x21;                       //通道模式配置为输入,接编码器,滤波器4时钟
, f* p7 ?- N: n6 E' W2 j: H    TIM1-> CCMR2  = 0x21;                       //通道模式配置为输入,接编码器,滤波器4时钟; `5 @9 U% q* ?$ u* c' g
$ f! _% G9 h, p. |/ H& {" @+ w( O' Q/ l
    TIM1-> SMCR   = 0x03;                       //编码器模式3
) [8 k, F9 F% |! c' D+ [' ]+ \( L7 ?: p" t5 t1 V2 ^' ^! D$ s' T
    TIM1-> CCER1  = 0x55;                       //配置通道使能和极性
6 T: i7 g0 Q4 k/ t    TIM1-> CCER2  = 0x55;                       //配置通道使能和极性
3 O# G* p8 u0 h
3 y' D, Q9 g) W2 s" k9 @  k0 L    TIM1-> IER  = 0x02;                         //使能中断
1 V/ M" K  x3 _4 ^) g& [! X# [
& S+ G% o/ }0 w6 H6 O    TIM1-> CR1 |= 0x01;                         //使能计数器
  V( i. P& t3 Q- `9 @' {4 {* ]1 P4 N9 q( a) ?/ O+ p$ l- I+ z
    EA = 1;
) y2 j3 |' Q9 b) w2 s3 j
" n+ ~. g* G/ n    while (1);3 H' }2 M6 ^+ D7 `& W
}$ ^# o8 ]' C6 c: [: J
  G* Q, o% B8 I; V: i0 x0 v
/******************** PWM中断读编码器计数值**************************/& X. P5 E* \2 n/ N
void PWMA_ISR() interrupt 26% H* L( B3 k; H/ ]8 k; N
{) k$ O/ N9 X9 r9 D/ y
    if (TIM1->SR1 & 0X02)
9 M1 D, e$ T/ ^% n    {- d5 e- m- e; j" A/ {9 N
        P03 = ~P03;1 w: ^, g2 G: O+ [
        cnt_H = TIM1->CCR1H;
$ n8 h7 R4 R1 y        cnt_L = TIM1->CCR1L;
7 q! h# c, n' F( r        TIM1->SR1 &= ~0X02;& F: ^- F, F! A1 Q) _
    }; j- a2 U; t/ q( _/ w' v
}
* _- Z* I# V' K) w3 n4 [; K

该用户从未签到

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-7-17 17:16 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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