- 打卡等级:以坛为家I
- 打卡总天数:213
- 最近打卡:2025-04-23 20:59:03
已绑定手机
荣誉版主
- 积分
- 1885
|
一、技术文章
到手的AI8051U,实现双电源切换和多插针的进化。
» AI32位8051交流社区,车规 AEC-Q100 Grade1› 技术交流› 作品展示› 到手的AI8051U,实现双电源切换和多插针的进化。 ...
二、回复
1、»
AI32位8051交流社区,车规 AEC-Q100 Grade1› 技术交流› ADC/比较器,DMA支持的12位ADC,轨到轨比较器,DAC› ADC输入这里要接限流电阻吗?如果要接,接多大的限流电 ...
19#回复:
能帮到你就好,毕竟超幅或者超量程,ADC大概率是要出问题的。
2、»
AI32位8051交流社区,车规 AEC-Q100 Grade1› 技术交流› 其他技术交流› MG995舵机PWM电压
10#回复:
好吧
PWM信号不受舵机外部供电电压影响,可以3.3的。
3、»
AI32位8051交流社区,车规 AEC-Q100 Grade1› 技术交流› 老鸟反刍/吐槽,新手乐园,毕业设计› pwm波形生成
5#回复:
可以用定时器来生成,大概的思路就是定时器定好值,然后在中断里判断引脚高低,用定时器我驱动过6-8个舵机。
4、
» AI32位8051交流社区,车规 AEC-Q100 Grade1› 技术交流› 老鸟反刍/吐槽,新手乐园,毕业设计› 请教在AI8051U擎天柱板子上好用的程序下载到8H8K64U中不 ...
沙发回复:
1、设置推挽输出的管脚,关闭内部上拉;
2、初始化时,RES和D0两个管脚,先置低再置高。
然后再试下呢? |
地板回复:
软件spi和iic驱动oled屏最近都用,不论8h、还是8051u-32bit我都在正常用,而且也做到了8051u-32bit的spi和iic的同时显示不同内容,我看你的代码了,我之前也遇到了跟你一样的问题,但rst和d0在gpio初始化时经过我这样的配置,就没问题了。
6#回复:
咱俩可能说的不是一回事,你试下我这样。
/*将D0、D1、RES、DC和CS引脚初始化为推挽输出模式*/
P2_MODE_OUT_PP(GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4);
/*置引脚默认电平*/
OLED_W_RES(0);
OLED_W_D0(0);
OLED_W_D1(1);
OLED_W_RES(1);
OLED_W_DC(1);
OLED_W_CS(1);
7#回复:
目前,我在8h、8051u-8、8051u-32模式,同一套改吧改吧都能正常用。
5、»
AI32位8051交流社区,车规 AEC-Q100 Grade1› 技术交流› BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC› 求助:8H1K08 SOP16接编码器读不到脉冲数字 [已解决] ...
板凳回复:
官方有出专门的PWM使用例程的,你可以参考。
我的实测你也可以参考下:




官方例程中每次+=2,我选择了一个讨巧的办法实现+=1,实现从0-180控制舵机的demo,希望对你有用。
视频为实测结果:
地板回复:
配置上你对照看一下,但是进中断后,你得在检测到中断后清中断啊
void PWMB_ISR(void) interrupt PWMB_VECTOR
{
if(PWMB_SR1 & 0x02) //编码器中断
{
PWMB_SR1 &= ~0x02;
pulse = PWMB_CNTR; //读取当前编码器计数值
B_Change = 1; //标志已有捕捉值
}
} |
11#回复:
没用过你这个芯片,但是专门帮你看了手册,功能是有的:

那使用P5.4口的时候,你得在下载选择里确认 “复位脚用作IO口”
下面的是验证过的:
void PWMA_config(void)
{
P_SW2 |= 0x80; //SFR enable
PWMA_PSCR = 0; // 预分频寄存器, 分频 Fck_cnt = Fck_psc/(PSCR[15:0]+1), 边沿对齐PWM频率 = SYSclk/((PSCR+1)*(AAR+1)), 中央对齐PWM频率 = SYSclk/((PSCR+1)*(AAR+1)*2).
PWMA_DTR = 0; // 死区时间配置, n=0~127: DTR= n T, 0x80 ~(0x80+n), n=0~63: DTR=(64+n)*2T,
// 0xc0 ~(0xc0+n), n=0~31: DTR=(32+n)*8T, 0xE0 ~(0xE0+n), n=0~31: DTR=(32+n)*16T,
PWMA_ARR = 0xffff; // 自动重装载寄存器, 控制PWM周期
PWMA_CNTR = 0; //清零编码器计数器值
PWMA_SR1 = 0;
PWMA_SR2 = 0;
PWMA_PS = 0;
PWMA_ENO = 0; //IO禁止输出PWM, bit7: ENO4N, bit6: ENO4P, bit5: ENO3N, bit4: ENO3P, bit3: ENO2N, bit2: ENO2P, bit1: ENO1N, bit0: ENO1P
PWMA_CCMR1 = 0x01+(10<<4); // 通道1模式配置, 配置成输入通道, 0~15对应输入滤波时钟数: 1 2 4 8 12 16 24 32 48 64 80 96 128 160 192 256
PWMA_CCMR2 = 0x01+(10<<4); // 通道2模式配置, 配置成输入通道, 0~15对应输入滤波时钟数: 1 2 4 8 12 16 24 32 48 64 80 96 128 160 192 256
PWMA_SMCR = 2; // 编码器模式, 模式1或模式2: 每个脉冲两个边沿加减2. 模式3: 每个脉冲四个边沿加减4.
PWMA_CCER1 = 0x55; // 配置通道输入使能和极性, 允许输入, 下降沿
PWMA_PS |= 0; // 选择IO, 0:选择P1.0 P1.1, 1:选择P2.0 P2.1, 2:选择P6.0 P6.1,
PWMA_PS |= (0<<2); // 选择IO, 0:选择P1.2 P1.3, 1:选择P2.2 P2.3, 2:选择P6.2 P6.3,
PWMA_IER = 0x02; // 使能中断
PWMA_CR1 = 0x01; // 使能计数器, 允许自动重装载寄存器缓冲, 边沿对齐模式, 向上计数, bit7=1:写自动重装载寄存器缓冲(本周期不会被打扰), =0:直接写自动重装载寄存器本(周期可能会乱掉)
}
//========================================================================
// 函数: void PWMA_ISR(void) interrupt PWMA_VECTOR
// 描述: PWMA中断处理程序.
// 参数: None
// 返回: none.
// 版本: V1.0, 2021-6-1
//========================================================================
void PWMA_ISR(void) interrupt PWMA_VECTOR
{
if(PWMA_SR1 & 0x02) //编码器中断
{
PWMA_SR1 &= ~0x02;
pulse = PWMA_CNTR; //读取当前编码器计数值
B_Change = 1; //标志已有捕捉值
}
}
6、»
AI32位8051交流社区,车规 AEC-Q100 Grade1› 技术交流› 仿真/编译器/汇编器/头文件› 基于8H8K64U及官方库函数进行新建工程_第二部分 ...
板凳回复:
..\Library\STC8G_H_Exti.h(29): error C231: 'INT0': redefinition
..\Library\STC8G_H_Exti.h(30): error C231: 'INT1': redefinition
compiling STC8G_H_Exti_Isr.c...
..\Library\STC8G_H_Exti.h(29): error C231: 'INT0': redefinition
..\Library\STC8G_H_Exti.h(30): error C231: 'INT1': redefinition
对照着找问题不就可以了嘛 |
|
|