stm32 spi dma单片机V2.0库的SPI的DMA1的Channel5的完成中断的中...

114网址导航【解决】定时器TIM8的中断怎么在库中没有定义【STM32F103RBT6 无TIM8】-电子产品世界论坛
【解决】定时器TIM8的中断怎么在库中没有定义【STM32F103RBT6 无TIM8】
在设置TIM8定时中断的时候
TIM8_CC_IRQn出错
可是在中是有定义的(更新了这个库,老师给的好像没有)
为什么会报错啊?还是不应该这样写TIM8的中断??
#include "stm32f10x.h"
#include "misc.h"
void RCC_Configuration(void);
void NVIC_Configuration(void);
void GPIO_Configuration(void);
void TIM2_Configuration(void);
void TIM3_Configuration(void);
void TIM8_Configuration(void);
void RCC_Configuration(void)
SystemInit();//24兆
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//TIM3外设时钟打开,TIM3是挂在APB1上的,一
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//TIM2外设时钟打开,TIM2是挂在APB1上的,一
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);//TIM8外设时钟打开,TIM8是挂在APB2上的,一
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//GPIOC外设时钟打开
void NVIC_Configuration(void)//设置中断,二
NVIC_InitTypeDef NVIC_InitS
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//响应式优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//响应式优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel =TIM8_CC_IRQ
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//响应式优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
void GPIO_Configuration(void)//三,LED配置
GPIO_InitTypeDef GPIO_InitS
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;//使用到PC1.2.3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
void TIM2_Configuration(void)//四,定时器配置
TIM_TimeBaseInitTypeDef TIM_TimeBaseS
TIM_TimeBaseStructure.TIM_Period = 4999;//计4999个数就产生一次更新事件,0,ms=0.5s
TIM_TimeBaseStructure.TIM_Prescaler = 2399;//预分频系数为2399,则计数器的时钟为24MHZ/kHZ,1/1.即0.1ms
//预分频数取值范围为0~65535
TIM_TimeBaseStructure.TIM_ClockDivision = 0;//
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式,从0开始向上
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);//将配置应用到TIM3中
void TIM3_Configuration(void)//四,定时器配置
TIM_TimeBaseInitTypeDef TIM_TimeBaseS
TIM_TimeBaseStructure.TIM_Period = 9999;//计9999个数就产生一次更新事件,00,ms=1s
TIM_TimeBaseStructure.TIM_Prescaler = 2399;//预分频系数为2399,则计数器的时钟为24MHZ/kHZ,1/1.即0.1ms
TIM_TimeBaseStructure.TIM_ClockDivision = 0;//
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式,从0开始向上
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);//将配置应用到TIM3中
void TIM1_Configuration(void)//四,定时器配置
TIM_TimeBaseInitTypeDef TIM_TimeBaseS
TIM_TimeBaseStructure.TIM_Period = 9999;//计9999个数就产生一次更新事件,00,ms=1s
TIM_TimeBaseStructure.TIM_Prescaler = 2399;//预分频系数为2399,则计数器的时钟为24MHZ/kHZ,1/1.即0.1ms
TIM_TimeBaseStructure.TIM_ClockDivision = 0;//
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式,从0开始向上
TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);//将配置应用到TIM8中
int main(void)
RCC_Configuration();
NVIC_Configuration();
GPIO_Configuration();
TIM2_Configuration();
TIM3_Configuration();
TIM8_Configuration();
TIM_ClearFlag(TIM8, TIM_FLAG_Update);
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
TIM_ClearFlag(TIM3, TIM_FLAG_Update);
TIM_ARRPreloadConfig(TIM8, DISABLE);
TIM_ARRPreloadConfig(TIM2, DISABLE);
TIM_ARRPreloadConfig(TIM3, DISABLE);
TIM_ITConfig(TIM8, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM1, ENABLE);//开启定时器TIM1
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM2, ENABLE);//开启定时器TIM2
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM3, ENABLE);//开启定时器TIM3
while (1) {
#include "stm32f10x_it.h"
void TIM8_IRQHandler(void)
if (TIM_GetITStatus(TIM8, TIM_IT_Update) != RESET) //检测是否发生溢出更新事件
TIM_ClearITPendingBit(TIM8, TIM_IT_Update);
GPIO_WriteBit(GPIOC, GPIO_Pin_0|GPIO_Pin_4, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_0|GPIO_Pin_4)));//取反库函数
void TIM2_IRQHandler(void)
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //检测是否发生溢出更新事件
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
GPIO_WriteBit(GPIOC, GPIO_Pin_2|GPIO_Pin_6, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_2|GPIO_Pin_6)));//取反库函数
void TIM3_IRQHandler(void)
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检测是否发生溢出更新事件
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
GPIO_WriteBit(GPIOC, GPIO_Pin_1|GPIO_Pin_5, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_1|GPIO_Pin_5)));//取反库函数
楼主用的是哪个型号的STM32.....
可以查看stm32f10x.h的第167行,根据你所用芯片的类型去看看是否有这个东东
仔细看看库函数和MCU的数据手册
#ifdef STM32F10X_HD_VL
/*!& ADC1 global Interrupt
EXTI9_5_IRQn
/*!& External Line[9:5] Interrupts
TIM1_BRK_TIM15_IRQn
/*!& TIM1 Break and TIM15 Interrupts
TIM1_UP_TIM16_IRQn
/*!& TIM1 Update and TIM16 Interrupts
TIM1_TRG_COM_TIM17_IRQn
/*!& TIM1 Trigger and Commutation and TIM17 Interrupt
TIM1_CC_IRQn
/*!& TIM1 Capture Compare Interrupt
/*!& TIM2 global Interrupt
/*!& TIM3 global Interrupt
/*!& TIM4 global Interrupt
I2C1_EV_IRQn
/*!& I2C1 Event Interrupt
I2C1_ER_IRQn
/*!& I2C1 Error Interrupt
I2C2_EV_IRQn
/*!& I2C2 Event Interrupt
I2C2_ER_IRQn
/*!& I2C2 Error Interrupt
/*!& SPI1 global Interrupt
/*!& SPI2 global Interrupt
USART1_IRQn
/*!& USART1 global Interrupt
USART2_IRQn
/*!& USART2 global Interrupt
USART3_IRQn
/*!& USART3 global Interrupt
EXTI15_10_IRQn
/*!& External Line[15:10] Interrupts
RTCAlarm_IRQn
/*!& RTC Alarm through EXTI Line Interrupt
/*!& HDMI-CEC Interrupt
TIM12_IRQn
/*!& TIM12 global Interrupt
TIM13_IRQn
/*!& TIM13 global Interrupt
TIM14_IRQn
/*!& TIM14 global Interrupt
/*!& TIM5 global Interrupt
/*!& SPI3 global Interrupt
UART4_IRQn
/*!& UART4 global Interrupt
UART5_IRQn
/*!& UART5 global Interrupt
TIM6_DAC_IRQn
/*!& TIM6 and DAC underrun Interrupt
/*!& TIM7 Interrupt
DMA2_Channel1_IRQn
/*!& DMA2 Channel 1 global Interrupt
DMA2_Channel2_IRQn
/*!& DMA2 Channel 2 global Interrupt
DMA2_Channel3_IRQn
/*!& DMA2 Channel 3 global Interrupt
DMA2_Channel4_5_IRQn
/*!& DMA2 Channel 4 and Channel 5 global Interrupt
DMA2_Channel5_IRQn
/*!& DMA2 Channel 5 global Interrupt (DMA2 Channel 5 is
mapped at position 60 only if the MISC_REMAP bit in
the AFIO_MAPR2 register is set)
#endif /* STM32F10X_HD_VL */
TIM8是定义在STM32F10X_HD_XX 系列的
STM32F103RBT8是属于STM32F10X_MD_XX系列
数据手册:
建议了解一下预编译指令
STM32F103RBT6没有TIM8,get,原来不是所有的芯片都有TIM8和其他的什么的==
说一句,我是应为进入不了定时器中断,才网上爬文的,找了半天看到你这个,没有啥帮助,看到了你的错误,说一句,v3.5的库以及启动文件的话,你的tim8的中断服务函数名字是错的,请你仔细查查
匿名不能发帖!请先 [
Copyright (C) 《电子产品世界》杂志社 版权所有后使用快捷导航没有帐号?
查看: 1388|回复: 1
STM32F407通过SPI读取ADS8329,用定时器触发DMA以SPI读取AD值
最近用到STM32F407通过SPI读取ADS8329,想用定时器触发DMA以SPI读取AD值,在网上找了一圈,国内国外网站找遍了都没有类似的例子,就自己写了一个,发上来希望大家指正。
ADS8329的最高采样率是1Msps,
CONVST - PE8 - TIM1_CH1N
CS - PE12 - TIM1_CH3N
SCLK - PA5
/**********************程序开始**********************/
/*************本程序实现4个半字循环刷新****************/
u16 SPI1_Rx_Buff[4];& &//DMA指向内存地址,存放SPI接收数据
u16 SPI1_Tx_Buff[4]={0xd000,0xd000,0xd000,0xd000}; //存放SPI发送数据
void SPI1_Init(void)
{& && && &
& && &&&GPIO_InitTypeDef&&GPIO_InitS
& && &&&SPI_InitTypeDef&&SPI_InitS
& && &&&RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//使能GPIOA时钟
& && &&&RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);//使能SPI1时钟
& && &&&//PA5,6,7初始化设置
& && &&&GPIO_InitStructure.GPIO_Pin =GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//PA5~7复用功能输出& && &&&
& && &&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能
& && &&&GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
& && &&&GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
& && &&&GPIO_InitStructure.GPIO_PuPd&&= GPIO_PuPd_UP;//上拉&&
& && &&&GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化
& && &&&GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1);//PA5复用为 SPI1
& && &&&GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_SPI1);//PA6复用为 SPI1
& && &&&GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_SPI1);//PA7复用为 SPI1
& && &&&//这里只针对SPI口初始化
& && &&&RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,ENABLE);//复位SPI1
& && &&&RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,DISABLE);//停止复位SPI1
& && &&&SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullD
& && &&&SPI_InitStructure.SPI_Mode = SPI_Mode_M& && && && && & //为主SPI
& && &&&SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;& && && && && & //SPI发送接收16位帧结构
& && &&&SPI_InitStructure.SPI_CPOL = SPI_CPOL_L& && && && && & //串行同步时钟的空闲状态为低电平
& && &&&SPI_InitStructure.SPI_CPHA = SPI_CPHA_2E& && &&&//串行同步时钟的第二个跳变沿(上升或下降)数据被采样
& && &&&SPI_InitStructure.SPI_NSS = SPI_NSS_S& && && && && & //NSS信号由软件管理
& && &&&SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;&&//波特率预分频值为4(21MHz)
& && &&&SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;& && &&&//数据从MSB位开始
& && &&&SPI_InitStructure.SPI_CRCPolynomial = 7;& && &&&//CRC值计算的多项式
& && &&&SPI_Init(SPI1, &SPI_InitStructure);
& && &&&SPI_Cmd(SPI1, ENABLE); //使能SPI外设
void DMA_Config(void)
& && &&&DMA_InitTypeDef DMA_InitS
& && &&&RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);
& && &&&/* DMA disable*/
& && &&&DMA_Cmd(DMA2_Stream2, DISABLE);
& && &&&DMA_Cmd(DMA2_Stream3, DISABLE);
& && &&&DMA_DeInit(DMA2_Stream2);
& && &&&DMA_DeInit(DMA2_Stream3);
& && &&&//& &SPI1 RX DMA 配置&&Stream2
& && &&&DMA_InitStructure.DMA_Channel = DMA_Channel_6;
& && &&&DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&SPI1-&DR;& && && &//指定DMA的外设基地址为SPI1的数据地址
& && &&&DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)SPI1_Rx_B& && && &//指定DMA的内存基地址
& && &&&DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToM& && && && && &&&//DMA传输方向为读外设 写到内存
& && &&&DMA_InitStructure.DMA_BufferSize = 4;//DataS& && && && && && && && && & //传输数量(0-65535,不能为0)
& && &&&DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_D& && &&&//失能外设地址增长
& && &&&DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_E& && && && && &&&//使能内存地址增长 免去FOR循环
& && &&&DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfW& && &&&//PSIZE=16bit
& && &&&DMA_InitStructure.DMA_MemoryDataSize = DMA_PeripheralDataSize_HalfW& && &&&//MSIZE=16bit
& && &&&DMA_InitStructure.DMA_Mode = DMA_Mode_C//DMA_Mode_N//& && & //DMA模式为非循环模式,非循环模式只进行单次传输。
& && &&&DMA_InitStructure.DMA_Priority = DMA_Priority_H& && && && && && && &//优先权为高
& && &&&DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_D& && && && && && &//失能FIFO模式
& && &&&DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfF& && & //FIFO的阀值为半满
& && &&&DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_S& && && && && && &&&//内存突发传输为单一
& && &&&DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_S& &&&//外设突发传输为单一
& && &&&DMA_Init(DMA2_Stream2, &DMA_InitStructure);& && && && && && && && && &&&//初始化DMA2_Stream2
& && &&&//DMA_ITConfig(DMA2_Stream2, DMA_IT_TC, ENABLE);//使能传输完成中断
& && &&&//& &SPI1 TX DMA 配置& &Stream3
& && &&&DMA_InitStructure.DMA_Channel = DMA_Channel_6;& && &&&
& && &&&DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&SPI1-&DR;& && && &//指定DMA的外设基地址为SPI1的数据地址
& && &&&DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)SPI1_Tx_B& && && &//指定DMA的内存基地址
& && &&&DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToP& && && && && &&&//DMA传输方向为读内存,写外设
& && &&&DMA_InitStructure.DMA_BufferSize = 4;//DataS& && && && && && && && && & //传输数量(0-65535,不能为0)
& && &&&DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_D& && &&&//失能外设地址增长
& && &&&DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_E& && && && && &&&//失能内存地址增长
& && &&&DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfW& && &&&//PSIZE=16bit
& && &&&DMA_InitStructure.DMA_MemoryDataSize = DMA_PeripheralDataSize_HalfW& && &&&//MSIZE=16bit& && && &&&
& && &&&DMA_InitStructure.DMA_Mode = DMA_Mode_C//DMA_Mode_N//& && & //DMA模式为非循环模式,非循环模式只进行单次传输。
& && &&&DMA_InitStructure.DMA_Priority = DMA_Priority_M& && && && && && &//优先权为中等
& && &&&DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_D& && && && && && &//失能FIFO模式
& && &&&DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfF& && & //FIFO的阀值为半满
& && &&&DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_S& && && && && && &&&//内存突发传输为单一
& && &&&DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_S& &&&//外设突发传输为单一
& && &&&DMA_Init(DMA2_Stream3, &DMA_InitStructure);& && && && && && && && && &&&//初始化DMA2_Stream3
& && &&&//DMA_ITConfig(DMA2_Stream3, DMA_IT_TC, ENABLE);& && && && && && && && &//因为是发送虚拟数据。不需要中断
& && &&&/* DMA enable*/
& && &&&DMA_Cmd(DMA2_Stream2, ENABLE);
& && &&&DMA_Cmd(DMA2_Stream3, ENABLE);
void TIM1_Init(u16 period)//period设置24以1MHz采样,period设置240以100KHz采样,period设置2400以10KHz采样,period设置24000以1KHz采样,
& && &&&GPIO_InitTypeDef&&GPIO_InitS
& && &&&TIM_TimeBaseInitTypeDef TIM_TimeBaseS
& && &&&TIM_OCInitTypeDef TIM_OCInitS
& && &&&RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);//使能GPIOE时钟
& && &&&RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
& && &&&GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8 |GPIO_Pin_9 | GPIO_Pin_12 |GPIO_Pin_13;
& && &&&GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//模式必须为复用
& && &&&//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
& && &&&GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
& && &&&GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//频率为快速
& && &&&GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
& && &&&GPIO_Init(GPIOE, &GPIO_InitStructure);
& && &&&GPIO_PinAFConfig(GPIOE, GPIO_PinSource8, GPIO_AF_TIM1);//PE8 作为 AD的/convst信号
& && &&&GPIO_PinAFConfig(GPIOE, GPIO_PinSource9, GPIO_AF_TIM1);
& && &&&GPIO_PinAFConfig(GPIOE, GPIO_PinSource12, GPIO_AF_TIM1);//PE12 作为 AD的/CS信号
& && &&&GPIO_PinAFConfig(GPIOE, GPIO_PinSource13, GPIO_AF_TIM1);
& && &&&//初始化
& && &&&TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //死区控制用。
& && &&&TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;&&//向上计数
& && &&&TIM_TimeBaseStructure.TIM_Prescaler = 7 - 1;& &//Timer clock = 168M /(TIM_Prescaler+1) = 24M
& && &&&TIM_TimeBaseStructure.TIM_RepetitionCounter = 4;
& && &&&TIM_TimeBaseStructure.TIM_Period = period - 1;
& && &&&TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);
& && &&&//配置输出比较,产生PWM方波
& && &&&TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//PWM1为正常占空比模式,PWM2为反极性模式
& && &&&TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_E
& && &&&TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_E
& && &&&TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_H
& && &&&TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_H//输出反相 TIM_OCNPolarity_L//输出同相,
& && &&&TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_S
& && &&&TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_R
& && &&&TIM_OCInitStructure.TIM_Pulse = 1;//ccr1;//PE8 作为 AD的/convst信号
& && &&&TIM_OC1Init(TIM1,&TIM_OCInitStructure);//触发DMA2_Stream3 channel6
& && &&&TIM_OCInitStructure.TIM_Pulse = 1;//ccr2;
& && &&&TIM_OC2Init(TIM1,&TIM_OCInitStructure);//触发DMA2_Stream2 channel6
& && &&&TIM_OCInitStructure.TIM_Pulse = 23;//ccr3;//PE12 作为 AD的/CS信号
& && &&&TIM_OC3Init(TIM1,&TIM_OCInitStructure);
& && &&&TIM_Cmd(TIM1,ENABLE);
& && &&&TIM_CtrlPWMOutputs(TIM1,ENABLE);
& && &&&/* TIM1 DMA 请求使能 */
& && &&&TIM_DMACmd(TIM1, TIM_DMA_CC1 | TIM_DMA_CC2, ENABLE);//\\
int main(void)
& && &&&SPI1_Init();
& && &&&DMA_Config();
& && &&&TIM1_Init(24);//1MHz
& && &&&//PWM_Init(240);//100KHz
& && &&&//PWM_Init(2400);//10KHz
& && &&&//PWM_Init(24000);//1KHz
& && &&&while(1)
& && && && && & //CPU很闲
& && &&&};& &
/**********************程序结束**********************/
你好,请问一下这样配置后每次PWM信号后是只读一次SPI吗,还是连续读取设置的DMA发送数
论坛资料为网友自由上传,与本论坛无关。
Powered by
关注一牛微信
获取手机验证码

参考资料

 

随机推荐