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

STC32G单片机编码器模式

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
有没人测试过STC32G单片机的编码器模式。
" Q! y2 c" T' z1.例程 中 P1口选择P1.0 ,P1.2 ,STC32G 没有P1.2   。这么郁闷的事也有。- i8 D5 S& U+ `
2.换到P2 口也没反应。
/ S, B" N6 g$ d+ v! l7 v3.找到STC8H的编码器历程也不能用。
" _0 \  T( w2 l' P* T" E1 F  x8 E2 w3 L, C
下面是STC8H编码器模式历程:/ U) n8 L8 p1 n, w
#include "reg51.h"; \# f- `( m! a
#include "intrins.h"" V4 ^/ Y* }0 F5 |' J
6 Q' q. c, A+ k/ ?/ b, o
typedef struct TIM1_struct$ W1 L4 E: K0 ]1 I0 n
{
7 S+ V# \" m  y    volatile unsigned char CR1;     /*!< control register 1 */
! |( l$ T1 y* q5 u8 F    volatile unsigned char CR2;     /*!< control register 2 */! [; U% I: U, P; [% J  N* f
    volatile unsigned char SMCR;    /*!< Synchro mode control register */) ^% }$ _/ L% `0 |/ z  b
    volatile unsigned char ETR;     /*!< external trigger register */
5 x0 s% n" {# U; r; J    volatile unsigned char IER;     /*!< interrupt enable register*// Y4 ?  r6 F/ F' C" C3 K
    volatile unsigned char SR1;     /*!< status register 1 *// ^7 t8 v+ M# b; T; d. S
    volatile unsigned char SR2;     /*!< status register 2 */
: f6 x! e! k. J2 h    volatile unsigned char EGR;     /*!< event generation register */0 c( j% ~0 P: Z- Z- I& F( H& E, e
    volatile unsigned char CCMR1;   /*!< CC mode register 1 */
( o% o3 @6 z  @. F, i    volatile unsigned char CCMR2;   /*!< CC mode register 2 */
2 s( ], \7 N( P3 r" H. S8 @    volatile unsigned char CCMR3;   /*!< CC mode register 3 */! {. ?6 s9 c2 C- n& @* P
    volatile unsigned char CCMR4;   /*!< CC mode register 4 */
" @  P6 |% _7 @* u    volatile unsigned char CCER1;   /*!< CC enable register 1 */
8 L6 \# a; T4 l    volatile unsigned char CCER2;   /*!< CC enable register 2 */! D, r3 ], t, x! j" g0 T7 `+ Z
    volatile unsigned char CNTRH;   /*!< counter high */
2 o  q1 q7 A0 W3 f. i$ s    volatile unsigned char CNTRL;   /*!< counter low */
$ M: H7 E( h$ y2 b    volatile unsigned char PSCRH;   /*!< prescaler high */
# q2 E0 ]" o7 R. G& K1 y    volatile unsigned char PSCRL;   /*!< prescaler low */
+ J& v$ ]0 t4 U' K4 U; I6 f    volatile unsigned char ARRH;    /*!< auto-reload register high */
2 Z8 r$ M  P9 i& S( ]8 x2 _    volatile unsigned char ARRL;    /*!< auto-reload register low */3 F; x  Y# ^) `, H$ r
    volatile unsigned char RCR;     /*!< Repetition Counter register */
5 Y/ Y2 Z9 J) N4 u. }  ^0 E    volatile unsigned char CCR1H;   /*!< capture/compare register 1 high */* ]/ S' J2 i& Y  A
    volatile unsigned char CCR1L;   /*!< capture/compare register 1 low */
" h6 W8 \$ b, V) n  Y$ H0 |    volatile unsigned char CCR2H;   /*!< capture/compare register 2 high */
. f  r+ n( }9 k8 p5 _$ `    volatile unsigned char CCR2L;   /*!< capture/compare register 2 low */0 z. j/ ^6 g; o- m4 s
    volatile unsigned char CCR3H;   /*!< capture/compare register 3 high */
/ ]7 P8 U1 M. f+ w6 S6 i; t    volatile unsigned char CCR3L;   /*!< capture/compare register 3 low */
2 v: _4 l! }# e. [) M) i    volatile unsigned char CCR4H;   /*!< capture/compare register 3 high */
2 n1 E% |  _% T. F    volatile unsigned char CCR4L;   /*!< capture/compare register 3 low */
- b* _5 O7 u1 E; E1 @" ?5 X    volatile unsigned char BKR;     /*!< Break Register */  b9 V) [3 `: g6 a$ V
    volatile unsigned char DTR;     /*!< dead-time register */
' N% Q" r" h3 B; X$ {) d, B: |    volatile unsigned char OISR;    /*!< Output idle register */! {5 w; ]4 D5 Z' N3 a
}TIM1_TypeDef;
/ w. R3 y. n% v5 y# \: ]# }
1 [5 N- ]$ J$ \7 q2 |( ^! x2 m#define TIM1_BaseAddress    0xFEC06 k4 _- N" n% c
1 G- d$ u" l) J1 _. ~
#define TIM1        ((TIM1_TypeDef xdata*)TIM1_BaseAddress)
, F: x8 f/ Y0 W' x% ]1 l#define PWMA_ENO    (*(unsigned char volatile xdata *)0xFEB1)
/ B1 y  B+ c  ?* p3 o6 n#define PWMA_PS     (*(unsigned char volatile xdata *)0xFEB2)  w' V, a% R2 E3 q8 C9 F

1 ^$ [' b/ u- x5 u9 y3 `$ h/ ~sfr     P0M0    =   0x94;
8 O3 A1 _" |7 @sfr     P0M1    =   0x93;, m/ Z- o/ ^4 j
sfr     P1M0    =   0x92;, C1 ~5 w+ h1 J, d, @
sfr     P1M1    =   0x91;
7 ~) M/ m% v4 I( b8 Msfr     P_SW2   =   0xba;
9 Z% W* b; d& F$ _4 j) j5 v/ p
sbit    P03     =   P0^3;+ a* K' Y4 a" ~% v. f

" K  ~5 P3 }) F* Y! M/ Qunsigned char cnt_H, cnt_L;! G# e* ~% M4 V2 j7 C
/ k: K7 v5 _0 f( |9 a
void main(void)
. y7 ?3 }/ K1 e. N{
2 d; v1 Z+ |8 p% o- R9 e& Y    P_SW2 = 0x80;+ X! L7 b' j& K$ Z% B) w- [* n2 C

# U5 o9 q! }7 }* b    P1M1 = 0x0f;* s4 D; ]& u* I/ T9 O
    P1M0 = 0x00;
% h; P- b7 ~8 Y
( P: U. `3 n1 N, s* L    PWMA_ENO = 0x00;                            //配置成TRGI 的pin需关掉ENO对应bit并配成input$ J  p  f9 m) C
    PWMA_PS = 0x00;                             //00WM at P1% z2 O/ j$ \1 F: {& @: z
; N/ ^2 c3 ?8 _: p1 _
    TIM1-> PSCRH = 0x00;                        //预分频寄存器
% c2 U$ y. W9 D. D" J    TIM1-> PSCRL = 0x00;
/ B: m, E8 S6 i  w' M0 d. m
' Z% `! Y. o- ?. t. S( {7 t    TIM1-> CCMR1  = 0x21;                       //通道模式配置为输入,接编码器,滤波器4时钟1 g' L5 [% Z( H2 x. E& u
    TIM1-> CCMR2  = 0x21;                       //通道模式配置为输入,接编码器,滤波器4时钟
3 b3 s* j) n' P+ Y1 L" }
3 G5 y% E) O* ~7 ]0 c    TIM1-> SMCR   = 0x03;                       //编码器模式3
3 Q% B& v3 l- n2 p
- c0 r- f3 l" n* u6 I) s    TIM1-> CCER1  = 0x55;                       //配置通道使能和极性
+ [8 Y- `2 e- a" h5 t3 t9 l9 u3 R5 O    TIM1-> CCER2  = 0x55;                       //配置通道使能和极性$ A* ^3 W9 k' o7 h* `3 K

, L2 j% h# E9 L5 }    TIM1-> IER  = 0x02;                         //使能中断$ t, x' v& }# m& I' m' \* E) n  h
, Y& |( N8 ?" C$ Y3 Q6 V7 H8 Q
    TIM1-> CR1 |= 0x01;                         //使能计数器
$ t7 f2 c+ l6 N9 z% K* f; [) Y+ I. K2 I* Y; }0 G
    EA = 1;
' p8 [+ `; @. h/ f! v$ W, `6 i# L6 J; q" Z; X) ^6 D3 F7 z
    while (1);
% a1 C7 ?8 O4 z! r}
8 t6 x- \4 k4 e6 ?
* ]0 ~0 b  z# p) E/******************** PWM中断读编码器计数值**************************/2 i. V$ g$ Z5 A- D
void PWMA_ISR() interrupt 26
) n8 d& y  H; c6 ]1 A{
% F. ]# c! j# ~. [& g$ U4 I    if (TIM1->SR1 & 0X02)
. c  Y  t8 S' S) \- P+ G% e    {' |" N# H  q6 f
        P03 = ~P03;4 H4 z4 T2 I) R( N6 Z7 |
        cnt_H = TIM1->CCR1H;
! _5 O1 M3 D# W5 s. \, ?1 }        cnt_L = TIM1->CCR1L;* E+ c/ x9 F5 ^7 c
        TIM1->SR1 &= ~0X02;7 P7 g, M" _" x8 g" O
    }
! V7 _; j! d  L' E4 l' m5 m' g}9 G7 D0 V; C" ~& j

该用户从未签到

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

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

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

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