91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 2KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-18
  • 語言: 其他
  • 標簽: TM1804??PWM+DMA??

資源簡介

STM32驅動TM1804 燈帶,實現方法PWM+DMA不占用CPU內存

資源截圖

代碼片段和文件信息

#include?“Tm1803.h“
#include?“IIC.h“

u8?LEDbuffer[LED_BUFFER_SIZE]={0};


void?TIM4_PWM_Init(u16?arru16?psc) ?//LED驅動?psc=0
{??
RCC->APB1ENR|=1<<2;? //TIM4時鐘使能
RCC->APB2ENR|=1<<3;???? //使能PORTB時鐘

GPIOB->CRL&=0XF0FFFFFF; //PB6?
GPIOB->CRL|=0X0B000000; //復用功能輸出? ??

TIM4->ARR=arr; //設定計數器自動重裝值?
TIM4->PSC=psc; //預分頻器不分頻

TIM4->CCMR1|=6<<4;?? //CH1?PWM模式1

TIM4->CCMR1|=1<<3;? ????//CH1預裝載使能 ?

TIM4->CCER|=1<<0;??? //OC1?輸出使能?(0<<1?輸出極性高) ??

TIM4->DIER?|=?0x0200; //開啟DMA通道傳輸

MYDMA_Config(DMA1_Channel1(u32)&TIM4->CCR1(u32)LEDbufferLED_BUFFER_SIZE);
// TIM4->CR1|=0x01;???? //使能定時器3??
}


u16?DMA1_MEM_LEN;

void?MYDMA_Config(DMA_Channel_TypeDef*DMA_CHxu32?cparu32?cmaru16?cndtr)
{
RCC->AHBENR|=1<<0; //開啟DMA1時鐘
delay_ms(50);? //等待DMA時鐘穩定
DMA_CHx->CPAR=cpar;? ? //DMA1?外設地址?
DMA_CHx->CMAR=(u32)cmar;? //DMA1存儲器地址
DMA1_MEM_LEN?=cndtr;?? //保存DMA傳輸數據量
DMA_CHx->CNDTR=cndtr;???? //DMA1傳輸數據量
DMA_CHx->CCR=0X00000000; //復位
DMA_CHx->CCR|=1<<4;?? //從存儲器讀
DMA_CHx->CCR|=1<<1; //允許傳輸完成中斷
DMA_CHx->CCR|=1<<5;?? //普通模式1?循環發送?0 不循環發送
DMA_CHx->CCR|=0<<6;? //外設地址非增量模式
DMA_CHx->CCR|=1<<7;? ? //存儲器增量模式
DMA_CHx->CCR|=1<<8;? ? //外設數據寬度為16位
DMA_CHx->CCR|=0<<10;? //存儲器數據寬度8位
DMA_CHx->CCR|=1<<13;? //高等優先級
DMA_CHx->CCR|=0<<14;? //非存儲器到存儲器模式

MY_NVIC_Init(00DMA1_Channel1_IRQChannel2);//組2,低優先級?
}

//開啟一次DMA傳輸
void?MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx)
{
DMA_CHx->CCR&=~(1<<0);? //關閉DMA傳輸?
DMA_CHx->CNDTR=DMA1_MEM_LEN;?//DMA1傳輸數據量?
DMA_CHx->CCR|=1<<0;?????????? //開啟DMA傳輸
}

void?DMA1_Channel1_IRQHandler(void) //DMA發送數據完成中斷函數
{
if(DMA1->ISR&(1<<1)) //發送完成
{
DMA1->IFCR|=1<<1; //清除通道1傳輸完成標志
DMA1_Channel1->CCR&=~(1<<0);? //關閉DMA傳輸
TIM4->CR1&=?0xfe;???? ????????//不使能定時器3?
}
}


void?LedDrive(u8?*bufu8?Redu8?Greenu8?Blue)
{
u16?i;
for(i=0;i<8;i++)
{
buf[i]? =?((Red< buf[8+i] =?((Green< buf[16+i] =?((Blue< }
}

void?SetLedColor(u8?indexu8?Redu8?Greenu8?Blue)
{
u8?temp[24]={0};
u8?i;
for(i=0;i<8;i++)
temp[i] =?((Green< for(i=0;i<8;i++)
temp[8+i]=?((Red< for(i=0;i<8;i++)
temp[16+i]=?((Blue<
for(i=0;i<24;i++)
LEDbuffer[LED_RESET_CODE+index*24+i]=temp[i];
}
void?DMA_Send_Data(void)
{
MYDMA_Enable(DMA1_Channel1);
TIM4->CR1|=0x01;???? //使能定時器3
}
extern?u8?abc;
void?TM1803_send(void)
{
//u16?i;
LedDrive(LEDbuffer25500);
MYDMA_Enable(DMA1_Channel1);
TIM4->CR1|=0x01;???? //使能定時器3
}



?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-03-12?17:14??TM1804?PWM+DMA驅動不占內存\
?????文件????????2880??2018-03-08?10:52??TM1804?PWM+DMA驅動不占內存\tm1804.c
?????文件?????????494??2018-03-08?11:20??TM1804?PWM+DMA驅動不占內存\Tm1804.h

評論

共有 條評論