�`��(d��ng)-����������
������������ָ��Ӯa(ch��n)Ʒ�ϵ�LED���������S���r(sh��)�g�ɰ�������u����(qi��ng)��������������u˥�p���й�(ji��)��е�һ��һ�����������ں���һ����������V����(y��ng)�����֙C(j��)����X������O(sh��)���ָʾ��������ʹ��MCU�_�l(f��)���P(gu��n)�đ�(y��ng)�îa(ch��n)Ʒ��Ҳ���Լ������������������(qi��ng)�Ñ����w�(y��n)�����ڱ���(sh��)�(y��n)�Ќ���B���ʹ��MM32L0ϵ�Юa(ch��n)ƷоƬ����������������ƽ�r(sh��)��(y��ng)���п���֪����MCU��GPIOݔ���ߵ��ƽ׃�����Ԍ�(sh��)�F(xi��n)LED����������ɂ�(g��)�^�������GPIO���ƽһֱ�S�ָ��ƽ���ߵ��ƽ��LED����̎���L�����L��Ġ�B(t��i)������������ͨ�^�^���l�ʵ��ƽ׃���팍(sh��)�F(xi��n)������ГQ�������˵�ҕ�X����Ч��(y��ng)�����۟o��Ѹ�ٲ���������׃�����^����������ҕ�X��һֱ���F(xi��n)һֱ�����ߜ�Ġ�B(t��i)��ͨ�^�{(di��o)��ռ�ձȿ��Կ���LED�������ȣ��o��ҕ�X��һ�N�����ɰ�������u����(qi��ng)��Ȼ��������������u˥�p��
�����ij����˵��������r(sh��)�g����(g��)�^�̳��m(x��)��s3��r(sh��)�g��������r(sh��)�g��LED��������u׃�����r(sh��)�g��1.5S����������r(sh��)�g��LED��������u׃�����r(sh��)�g��1.5S��
�����S���r(sh��)�g��u׃��(qi��ng)��˥�p�������ÃɷN�㔵(sh��)��ʽ��(sh��)�F(xi��n)�������ڵ����Һ���(sh��)������ָ��(sh��)������������(du��)�Q���½���������
ָ��(sh��)��ʽ�����D

Ҫ���� LED ���_(d��)����������Ч������(sh��)�H�Ͼ���Ҫ���� LED �������ȔM�Ϻ��������������ڱ��Ό�(sh��)�(y��n)����������ָ��(sh��)������������(du��)�Q���½���������ʽ���Ñ������(du��)���ҷ�ʽ���dȤҲ�����M(j��n)�ЇLԇ���ڱ��Ό�(sh��)�(y��n)�����҂�ʹ��MM32L0xxݔ���^���l�ʵ�PWM��̖(h��o)��ͨ�^�{(di��o)����̖(h��o)��ռ�ձ�������LED����������
����ָ��(sh��)��ʽ�������D��Ҫ���أ�
TIMPeriod�����r(sh��)����Ӌ(j��)��(sh��)����������ֵ����cPWM ���еĘO��ֵ��ȣ���(y��ng)�����xֵ��Ҫ�p 1������ PWM���ĘO��ֵ�Q���˿��Ƶķֱ���������O��ֵ�� 10�r(sh��)��PWM ռ�ձ�ֻ��10��(g��)�ȼ�(j��)�����_��0.1����(d��ng)�O��ֵ��1000 �r(sh��)��PWM ռ�ձ�1000��(g��)�ȼ�(j��)�����_��0.001���ڱ��Ό�(sh��)�(y��n)���O(sh��)�ö��r(sh��)����Ӌ(j��)��(sh��)����ֵ��255+1����PWM���еĘO��ֵҲ��256��
TIM_Prescaler�����r(sh��)���r(sh��)犷��l�����������ƶ��r(sh��)��Ӌ(j��)��(sh��)�� CNTӋ(j��)��(sh��)��1����Ҫ�ĕr(sh��)�g������ֵ̫���(hu��)��(d��o)��ݔ���Ć�(g��)PWM�������^�L��Ӱ푿��ƵĄ�(d��ng)�B(t��i)�����������LED���r(sh��)��ԓֵ̫���(hu��)��(d��o)��LED���_�P(gu��n)�r(sh��)�g׃�L���W�q���@��һ����f��ԓֵԽСԽ�����ڱ��Ό�(sh��)�(y��n)���O(sh��)�ö��r(sh��)���r(sh��)犷��l���Ӟ�1757+1������(du��)�r(sh��)�1758���l��
PWM �����c(di��n)��(sh��)��PWM�����c(di��n)��(sh��)����(du��)�M�������IJɘ��c(di��n)��(sh��)������LED�������ȷ֞�0-255��(g��)�ȼ�(j��)���ɘ��c(di��n)Խ�����ܸ��õ�߀ԭ�M���������ɘ��c(di��n)̫�������ܕ�(hu��)��(d��o)��ʧ�����ڱ��Ό�(sh��)�(y��n)���O(sh��)��PWM �����c(di��n)��(sh��)��40��
Period_class�����ڱ���(sh��)���� PWM ����ÿ��(g��)Ԫ�ص�ѭ�h(hu��n)�Δ�(sh��)����Ӱ푔M��������������
�ڱ��Ό�(sh��)�(y��n)���O(sh��)���O(sh��)�����ڱ���(sh��)��8��
���Ό�(sh��)�(y��n)����ֱ�ӏ�MM32L073�Ķ��r(sh��)��PWMݔ�������̵Ļ��A(ch��)���ĵÁ���TIM3���ó�����Ӌ(j��)��(sh��)��PWMͨ��ݔ��Ҳ�����óɮ�(d��ng)Ӌ(j��)��(sh��)�� CNT ��ֵС��ݔ�����^�Ĵ�CCR1��ֵ�r(sh��)��PWMͨ��ݔ�����ƽ���c(di��n)�� LED �����ں���(sh��)�����߀ʹ���˶��r(sh��)���Д���ÿ��(d��ng)���r(sh��)����һ��(g��)Ӌ(j��)��(sh��)������ɕr(sh��)���a(ch��n)���Д�������Д����(w��)����(sh��)�������ГQCCR1 ���^�Ĵ�����ֵ��
�����������£�
TIM3��ʼ������
//LED���ȵȼ�(j��)�б�
uint8_t PWM_Wave[] = {1,1,2,2,3,4,6,8,10,14,19,25,33,44,59,80,107,143,191,255,255
,191,143,107,80,59,44,33,25,19,14,10,8,6,4,3,2,2,1,1};
TIM3�ij�ʼ�����Д༰PWMݔ�����ã�
void TIM3_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//ʹ��TIM3�r(sh��)�
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);//ʹ��GPIOB�r(sh��)�
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //TIM3_CH1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //��(f��)������ݔ��
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3�Д�Դ
NVIC_InitStructure.NVIC_IRQChannelPriority = 0x01; //�O(sh��)���Д���(y��u)�ȼ�(j��)
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQͨ����ʹ��
NVIC_Init(&NVIC_InitStructure); //��ʼ��NVIC�Ĵ���
TIM_TimeBaseStructure.TIM_Period = arr;//�O(sh��)���Ԅ�(d��ng)�b�d�Ĵ���ֵ
TIM_TimeBaseStructure.TIM_Prescaler =psc; //�O(sh��)���A(y��)���lֵ
TIM_TimeBaseStructure.TIM_ClockDivision=0; //�O(sh��)�Õr(sh��)犷ָ�
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//�O(sh��)��Ӌ(j��)��(sh��)ģʽ
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //��ʼ��TIM3�Ĵ���
TIM_OCStructInit(&TIM_OCInitStructure);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //����PWMģʽ
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //ݔ��ʹ��
TIM_OCInitStructure.TIM_Pulse = 0; //�O(sh��)�ó�ʼ�}�_���Ȟ�0
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;//С��CCR1ֵ����ƽ
TIM_OC1Init(TIM3, &TIM_OCInitStructure); //��ʼ��TIM3_OC1�Ĵ���
TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); //�A(y��)�b�dʹ��
TIM_ARRPreloadConfig(TIM3, ENABLE); //ʹ�� TIM ���d�Ĵ��� ARR
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); //ʹ��TIM3�ĸ����Д�
TIM_Cmd(TIM3, ENABLE);//ʹ��TIM3
}
�����(w��)����(sh��)��
void TIM3_IRQHandler(void)
{
static uint8_t a = 0;//PWM���ijɆT��(sh��)������PWM���
static uint8_t b = 0;//Ӌ(j��)�����ڔ�(sh��)
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)//�Д�����Д���(bi��o)־λ
{
b++;
if(b >= 8) //���ڱ���(sh��)
{
TIM3->CCR1 = PWM_Wave [a]; //�Ķ��r(sh��)�����^�Ĵ���ֵ
a++;//���ָ����һ��(g��)�ɆT׃��
if( a >= 40) //����鵽���һλ������ָ����^
{
a=0;
}
b=0; //��������Ӌ(j��)��(sh��)��(bi��o)־
}
TIM_ClearITPendingBit (TIM3, TIM_IT_Update);
}
}
������
int main(void)
{
TIM3_PWM_Init(255,1757);
while(1)
{
}
}
���Ό�(sh��)�(y��n)���ÔM����������Ӌ(j��)�㣺
TIMPeriod=255+1��
TIM_Prescaler=1757+1��
PWM �����c(di��n)��(sh��)��a��=40��
Fpwm = 48M / ((arr+1)*(psc+1))(���Hz)
���r(sh��)�� update �¼����ڣ������r(sh��)���Д����ڣ�t1= 1/ Fpwm = 9376us
ÿ��(g��) PWM �c(di��n)�ĕr(sh��)�g��t2= t1*8= 75008us
��vPWM�������ڕr(sh��)�g�飺t3=t2*40= 3000320us
ͨ�^��ʽ��Ӌ(j��)���֪�����̵����ÿ�ʹ��ݔ���ĔM���������ڼs����3�������ϳ����˵��������r(sh��)�g����(g��)�^�̳��m(x��)��s3��r(sh��)�g��
����GPIOģ�MPWM�����O(sh��)Ӌ(j��)���������ܣ�
void LedOnOff(uint16_t t,uint16_t i)
{
LED1_ON();
delay_us(i);
LED1_OFF();
delay_us(t-i);
}
int main(void)
{
int i,j;
LED_Init();
TIM3_PWM_Init(255,1757);
while(1)
{
for(i=0;i<100;i+=1){
for(j=0;j<47;j+=1)
{
LedOnOff(100,i);
}
}
for(i=100;i>0;i--) {
for(j=0;j<46;j+=1)
{
LedOnOff(100,i);
}
}
}
}
ʹ��MM32L0ϵ��MCU�����ɷN��ʽ�����Ԍ�(sh��)�F(xi��n)�������������ɷN����GPIO�քe��PB4��PB5��download��MiniBoard�������Ԍ�(du��)�Ȝyԇ�ɷN��(sh��)�F(xi��n)�����IJ�����x����m�ĺ�����(sh��)�F(xi��n)��ʽ��
����Ҫ�˽�����`��(d��ng)MCU�a(ch��n)Ʒ��Ո(q��ng)(li��n)ϵ�`��(d��ng)���Ĵ�����-�f���¿Ƽ�

����ls ����ĕr(sh��)�g��2022-06-08