N76E003 PWM 程序及分析(边沿对齐、独立输出模式)

N76E003 包含三对( 6个PWM通道) 16位精度、可调周期和占空比的PWM输出让我们来看看六个通道的引脚分别是 可能有同学会疑问,为什么P1.5和P0.3都是PWM5,那如果要使用PWM5,该如何选择引脚呢?我们来看看芯片内部的原理图。 还是以PWM5为例:芯片内部是通过一个二选一选择器来进行引脚选择的,通过PIO05/PIO15寄存器来进行数据选择. 如果我...
摘要由CSDN通过智能技术生成

N76E003 包含三对( 6个PWM通道) 16位精度、可调周期和占空比的PWM输出

让我们来看看六个通道的引脚分别是
在这里插入图片描述
可能有同学会疑问,为什么P1.5和P0.3都是PWM5,那如果要使用PWM5,该如何选择引脚呢?我们来看看芯片内部的原理图。
这里写图片描述
还是以PWM5为例:芯片内部是通过一个二选一选择器来进行引脚选择的,通过PIO05/PIO15寄存器来进行数据选择.
这里写图片描述
如果我们选择使用P0.3作为PWM5的输出管脚,PIOCON0|=0x20;即可
贴心的新唐官方,为了让我们不用每次都去查表,在function_define.h中,提前将这些寄存器进行了宏定义。PWM5_P03_OUTPUT_ENABLE这样就可以了~

管脚选择完成后,我们开始配置PWM发生器,其中包含两种模式,边沿对齐或中心对齐,其中包含PWM频率和占空比的计算方法,之后的程序中我们会用到。这里我们配置为边沿对齐型clr_PWMTYP;

  • 6
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
n76e003是一款基于8位单片机的芯片,具有多个PWM输出通道。下面是一个简单的n76e003 PWM程序。 #include <N76E003.h> // 包含芯片头文件 #include "SFR_Macro.h" #define SYS_CLOCK 16000000 // 系统时钟频率为16MHz void Init_PWM(void) { P12_PUSHPULL_MODE; // 设置GPIO P1.2为推挽输出模式 PWM_IMDEPENDENT; // 设置PWM输出模式独立模式 PWM_CLOCK_DIV_64; // 设置PWM的时钟分频为64,时钟频率为SYS_CLOCK/64 PWM_SET_INDIVIDUAL_CHANNEL_MODE(PWM12 , PWM_ONE_SHOT_MODE); // 设置PWM通道12为单脉冲输出模式 PWM_OUTPUT_LEVEL_LOW(PWM12); // 设置PWM通道12为低电平输出 PWMPH = HIBYTE(0xFFFF); // 设置PWM高8位寄存器的值 PWMPM = LOBYTE(0xFFFF); // 设置PWM低8位寄存器的值 set_PWMCON1_LOAD; set_PWMRUN; } void main(void) { Init_PWM(); // 初始化PWM while(1) { // 在此处添加PWM输出的具体功能代码 } } 这个程序中,首先通过引入芯片头文件,并定义系统时钟频率为16MHz。然后定义了一个用于初始化PWM的函数Init_PWM()。在Init_PWM()函数中,设置了GPIO P1.2为推挽输出模式,并将PWM输出模式设置为独立模式。设置PWM时钟分频为64,时钟频率为SYS_CLOCK/64。设置PWM通道12为单脉冲输出模式,并设置PWM通道12为低电平输出。设置PWM寄存器的值,并将PWMCON1_LOAD置位,确保PWM输出开始。在main()函数中,首先调用了Init_PWM()函数进行初始化,然后在while循环中添加实际的PWM输出功能代码。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值