




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、STM32學(xué)習(xí)筆記GPIO口GPIO初始化void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;/聲明結(jié)構(gòu)體 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);/打開功能時(shí)鐘 (再寫這句程序的時(shí)候,必須進(jìn)行時(shí)鐘系統(tǒng)初始化的操作)。 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;/指明操作對(duì)象引腳 GPIO_InitStructure.GPIO_Spee
2、d = GPIO_Speed_50MHz;/設(shè)置IO口時(shí)鐘為50MHz/10MHz/2MHz GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;/設(shè)置推挽輸出/*GPIO_Mode_AIN 模擬輸入 GPIO_Mode_IN_FLOATING 浮空輸入 (一般為中斷所使用)。GPIO_Mode_IPD 下拉輸入 GPIO_Mode_IPU 上拉輸入 GPIO_Mode_Out_OD 開漏輸出 GPIO_Mode_Out_PP 推挽輸出 GPIO_Mode_AF_OD 復(fù)用開漏輸出 GPIO_Mode_AF_PP 復(fù)用推挽輸出 */ (一般用在點(diǎn)燈)
3、。 GPIO_Init(GPIOA, &GPIO_InitStructure); /執(zhí)行初始化IO口GPIO常用函數(shù)GPIO_SetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);/置高IO口GPIO_ResetBits(GPIOA,GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);/置低IO口GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOA, GPIO
4、_Pin_4);/翻轉(zhuǎn)IO口GPIOA->ODR = 0X0010 ;/IO口直接賦值語句GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)(讀取該口的電壓值,相當(dāng)于AVR的pin)。若IO口為高電平,則這個(gè)函數(shù)返回為1,為低電平時(shí)返回為0.SysTick系統(tǒng)時(shí)鐘SysTick配置函數(shù) if (SysTick_Config(SystemCoreClock / 3000)/配置時(shí)鐘的頻率,改變數(shù)字可改變頻率,數(shù)字越大頻率越快 /* Capture error */ while (1); EXTI中斷外部中斷外部中斷IO口設(shè)置void GPIO_EXTI_Conf
5、iguration(void) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD, ENABLE);/使能時(shí)鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);/使能復(fù)用IO時(shí)鐘GPIO_InitTypeDef GPIO_InitStructure;/聲明IO口初始化結(jié)構(gòu)體 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;/指定PD.06為操作對(duì)象 GPIO_InitStructure.GPIO_Mode = GPIO_Mod
6、e_IN_FLOATING;/設(shè)置模式為浮空輸入 GPIO_Init(GPIOC, &GPIO_InitStructure);/初始化IO口 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14; /指定PD.13,14為操作對(duì)象 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; /設(shè)置模式為浮空輸入 GPIO_Init(GPIOD, &GPIO_InitStructure);/初始化IO口 GPIO_EXTILineConfig(GPIO_PortSourceGPI
7、OC, GPIO_PinSource6); /將PC.06映射到外部中斷 GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource13); /將PD.13映射到外部中斷 GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource14); /將PD.14映射到外部中斷外部中斷初始化 void EXTI_Configuration(void) EXTI_InitTypeDef EXTI_InitStructure;/聲明外部中斷初始化結(jié)構(gòu)體 EXTI_InitStructure.EXTI_
8、Line = EXTI_Line6|EXTI_Line13|EXTI_Line14;/使能外部中斷線路6,13,14 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;/設(shè)置EXTI線路模式為中斷 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;/設(shè)置觸發(fā)方式為上升沿 EXTI_InitStructure.EXTI_LineCmd = ENABLE;/使能中斷線路 EXTI_Init(&EXTI_InitStructure);/初始化結(jié)構(gòu)體外部中斷向量&優(yōu)先級(jí)設(shè)定vo
9、id NVIC_EXTI_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure;/聲明中斷向量&優(yōu)先級(jí)設(shè)定結(jié)構(gòu)體 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/選擇中斷向量組別為2組 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;/指定外部中斷向量 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;/設(shè)置該中斷的先占優(yōu)先級(jí) NVIC_InitStructure.N
10、VIC_IRQChannelSubPriority = 0;/設(shè)置該中斷的從優(yōu)先級(jí) NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/使能該外部中斷 NVIC_Init(&NVIC_InitStructure);/初始化外部中斷NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;/ 指定外部中斷向量 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;/設(shè)置該中斷的先占優(yōu)先級(jí) NVIC_InitStructure.NVIC_IR
11、QChannelSubPriority = 0; /設(shè)置該中斷的從優(yōu)先級(jí) NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/使能該外部中斷 NVIC_Init(&NVIC_InitStructure); /初始化外部中斷由搶先優(yōu)先級(jí)和從優(yōu)先級(jí)實(shí)現(xiàn)了中斷嵌套,進(jìn)而使程序即使處理更加要緊的事情。且高的搶先優(yōu)先級(jí)可以打斷低的搶先優(yōu)先級(jí),當(dāng)搶先優(yōu)先級(jí)相同時(shí),那就比較從優(yōu)先級(jí),先響應(yīng)高的。當(dāng)二者都相同時(shí),先響應(yīng)物理地址低的中斷。外部中斷函數(shù)/*example1*/void EXTI9_5_IRQHandler(void) if(EXTI_GetITS
12、tatus(EXTI_Line6) != RESET)/如果對(duì)應(yīng)的中斷線路觸發(fā)事件,注意可以一個(gè)中斷向量對(duì)應(yīng)多個(gè)中斷引腳 /*add code */ EXTI_ClearITPendingBit(EXTI_Line6);/清中斷標(biāo)志 /*example2*/void EXTI15_10_IRQHandler(void) if(EXTI_GetITStatus(EXTI_Line13) != RESET)/如果對(duì)應(yīng)的中斷線路13觸發(fā)事件,注意可以一個(gè)中斷向量對(duì)應(yīng)多個(gè)中斷引腳 /* add code */ EXTI_ClearITPendingBit(EXTI_Line13);/清中斷標(biāo)志位 if
13、(EXTI_GetITStatus(EXTI_Line14) != RESET)/如果對(duì)應(yīng)的中斷線路14觸發(fā)事件,注意可以一個(gè)中斷向量對(duì)應(yīng)多個(gè)中斷引腳 /* add code */ EXTI_ClearITPendingBit(EXTI_Line14); /清中斷標(biāo)志位 中斷channel表WWDG_IRQChannel 窗口看門狗中斷 0x00PVD_IRQChannel PVD 通過 EXTI 探測中斷 TAMPER_IRQChannel 篡改中斷 RTC_IRQChannel RTC 全局中斷 FlashItf_IRQChannel FLASH全局中斷 RCC_IRQChannel RC
14、C 全局中斷 EXTI0_IRQChannel 外部中斷線 0 中斷 EXTI1_IRQChannel 外部中斷線 1 中斷 EXTI2_IRQChannel 外部中斷線 2 中斷 EXTI3_IRQChannel 外部中斷線 3 中斷 EXTI4_IRQChannel 外部中斷線 4 中斷 DMAChannel1_IRQChannel DMA通道 1中斷 DMAChannel2_IRQChannel DMA通道 2中斷 DMAChannel3_IRQChannel DMA通道 3中斷 DMAChannel4_IRQChannel DMA通道 4中斷 DMAChannel5_IRQChanne
15、l DMA通道 5中斷 DMAChannel6_IRQChannel DMA通道 6中斷 DMAChannel7_IRQChannel DMA通道 7中斷 ADC_IRQChannel ADC 全局中斷 USB_HP_CANTX_IRQChannel USB 高優(yōu)先級(jí)或者 CAN發(fā)送中斷 USB_LP_CAN_RX0_IRQChannel USB 低優(yōu)先級(jí)或者 CAN接收 0 中斷 CAN_RX1_IRQChannel CAN接收 1中斷 CAN_SCE_IRQChannel CAN SCE 中斷EXTI9_5_IRQChannel 外部中斷線 9-5 中斷 (5至9對(duì)應(yīng)一個(gè)中斷源)。TIM1
16、_BRK_IRQChannel TIM1 暫停中斷 TIM1_UP_IRQChannel TIM1 刷新中斷 TIM1_TRG_COM_IRQChannel TIM1 觸發(fā)和通訊中斷 TIM1_CC_IRQChannel TIM1 捕獲比較中斷 TIM2_IRQChannel TIM2 全局中斷 TIM3_IRQChannel TIM3 全局中斷 TIM4_IRQChannel TIM4 全局中斷 I2C1_EV_IRQChannel I2C1 事件中斷 I2C1_ER_IRQChannel I2C1 錯(cuò)誤中斷 I2C2_EV_IRQChannel I2C2 事件中斷 I2C2_ER_IRQC
17、hannel I2C2 錯(cuò)誤中斷 SPI1_IRQChannel SPI1 全局中斷 SPI2_IRQChannel SPI2 全局中斷 USART1_IRQChannel USART1 全局中斷 USART2_IRQChannel USART2 全局中斷 USART3_IRQChannel USART3 全局中斷 EXTI15_10_IRQChannel 外部中斷線 15-10 中斷 RTCAlarm_IRQChannel RTC 鬧鐘通過 EXTI線中斷 USBWakeUp_IRQChannel USB 通過 EXTI線從懸掛喚醒中斷EXIT中斷分為三種:一種為0至4,一種為5至9,一種為
18、10至15.中斷優(yōu)先級(jí)表NVIC_PriorityGroupNVIC_IRQChanne的先占優(yōu)先級(jí)NVIC_IRQChann的從優(yōu)先級(jí)描述NVIC_PriorityGroup_000-15先占優(yōu)先級(jí) 0 位 從優(yōu)先級(jí) 4位NVIC_PriorityGroup_10-10-7先占優(yōu)先級(jí) 1 位 從優(yōu)先級(jí) 3位NVIC_PriorityGroup_20-30-3先占優(yōu)先級(jí) 2 位 從優(yōu)先級(jí) 2位NVIC_PriorityGroup_30-70-1先占優(yōu)先級(jí) 3 位 從優(yōu)先級(jí) 1位NVIC_PriorityGroup_40-150先占優(yōu)先級(jí) 4 位從優(yōu)先級(jí) 0位TIM定時(shí)器TIM1TIM1 PWM
19、波模式TIM1 基本配置初始化void TIM1_BASE_Configuration(void) TIM_DeInit(TIM1);/將定時(shí)器1寄存器設(shè)置為缺省值 /*TIM1基本設(shè)置*/TIM_TimeBaseInitTypeDef TIM1_TimeBaseStructure;/聲明初始化結(jié)構(gòu)體 TIM1_TimeBaseStructure.TIM_Prescaler = 0x0; /設(shè)置周期 TIM1_TimeBaseStructure.TIM_Period = 0xFFFF; / 設(shè)置分頻,范圍0-0XFFFF TIM1_TimeBaseStructure.TIM_ClockDivi
20、sion = 0x0; /設(shè)置時(shí)鐘分割TIM1_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;/計(jì)數(shù)模式,向上計(jì)數(shù) TIM1_TimeBaseStructure.TIM_RepetitionCounter = 0x0;/計(jì)數(shù)器重載值 TIM_TimeBaseInit(TIM1,&TIM1_TimeBaseStructure);/初始化結(jié)構(gòu)體TIM2TIM2普通模式TIM2 基本配置初始化void TIM2_BASE_Configuration(void) TIM_TimeBaseInitTypeDef TIM_TimeBa
21、seStructure;/聲明初始化結(jié)構(gòu)體RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);/使能定時(shí)器2,注意時(shí)鐘源是APB1TIM_TimeBaseStructure.TIM_Period = 7200; /設(shè)置周期時(shí)間,范圍0-0XFFFF TIM_TimeBaseStructure.TIM_Prescaler = 9999;/ 設(shè)置分頻,范圍0-0XFFFF TIM_TimeBaseStructure.TIM_ClockDivision = 0;/時(shí)鐘分割 TIM_TimeBaseStructure.TIM_CounterMode
22、= TIM_CounterMode_Up;/向上計(jì)數(shù) TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);/初始化定時(shí)器基本配置 TIM_ClearITPendingBit(TIM2, TIM_IT_Update);/清除刷新中斷標(biāo)志位 TIM_ITConfig(TIM2, TIM_IT_Update , ENABLE);/開啟計(jì)數(shù)中斷 TIM_Cmd(TIM2, ENABLE);/使能TIM2TIM2 中斷初始化void NVIC_TIM2_Configuration(void)NVIC_InitTypeDef NVIC_InitStruct
23、ure;/聲明結(jié)構(gòu)體 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);/設(shè)置優(yōu)先級(jí)組0,1,2,3,4 NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;/中斷向量:定時(shí)器2全局中斷 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;/設(shè)置先占優(yōu)先級(jí) NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;/設(shè)置從優(yōu)先級(jí) NVIC_InitStructure.NVIC_IRQChannelCmd =
24、 ENABLE;/中斷使能 NVIC_Init(&NVIC_InitStructure);/初始化中斷TIM2 中斷函數(shù)void TIM2_IRQHandler(void)/定時(shí)器2中斷 if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)/等待刷新完成 TIM_ClearITPendingBit(TIM2, TIM_IT_Update);/清刷新數(shù)據(jù)中斷標(biāo)志位 /*add code */ TIM3 TIM3 PWM波模式TIM3 PWM 基本初始化設(shè)置void TIM3_BASE_Configuration(void) TIM_Time
25、BaseInitTypeDef TIM_TimeBaseStructure; /聲明基本初始化結(jié)構(gòu)體RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); /T3時(shí)鐘使能RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); /T3時(shí)鐘使能TIM_TimeBaseStructure.TIM_Period = 7200; /周期 72M/7200=10KHz.TIM_TimeBaseStructure.TIM_Prescaler = 0; /分頻TIM_TimeBaseStructure.TIM_
26、ClockDivision = 0; /時(shí)鐘分割TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /計(jì)數(shù)模式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /執(zhí)行初始化TIM3TIM_Cmd(TIM3, ENABLE); /使能計(jì)數(shù)TIM3 PWM 通道初始化void TIM3_CHANNEL_Configuration(void)TIM_OCInitTypeDef TIM_OCInitStructure; /聲明初始化結(jié)構(gòu)體/* 通道1 */TIM_OCInitStr
27、ucture.TIM_OCMode = TIM_OCMode_PWM2; /模式選擇:PWM2TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; /PWM波輸出使能TIM_OCInitStructure.TIM_Pulse = CCR1_Val; /寫比較值占空比TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; /比較時(shí)清零TIM_OC1Init(TIM3, &TIM_OCInitStructure);TIM_OC1PreloadConfig(TIM3
28、, TIM_OCPreload_Enable); /使能預(yù)裝載寄存器/* 通道2 */* PWM1 Mode configuration: Channel2 */TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; /PWM波輸出使能TIM_OCInitStructure.TIM_Pulse = CCR2_Val; /寫比較值占空比TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;TIM_OC2Init(TIM3, &TIM_OCInitStructur
29、e);TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); /使能預(yù)裝載寄存器/* 通道3 */* PWM1 Mode configuration: Channel3 */TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; /PWM波輸出使能TIM_OCInitStructure.TIM_Pulse = CCR3_Val; /寫比較值占空比TIM_OC3Init(TIM3, &TIM_OCInitStructure);TIM_OC3PreloadConfig(TIM3,
30、 TIM_OCPreload_Enable); /使能預(yù)裝載寄存器/* 通道4 */* PWM1 Mode configuration: Channel4 */TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; /PWM波輸出使能 TIM_OCInitStructure.TIM_Pulse = CCR4_Val; /寫比較值占空比TIM_OC4Init(TIM3, &TIM_OCInitStructure);TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable); /使能預(yù)
31、裝載寄存器TIM_ARRPreloadConfig(TIM3, ENABLE); /重新裝載計(jì)數(shù)使能TIM3 PWM IO口設(shè)置void GPIO_ TIM3_ Configuration(void)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);/使能時(shí)鐘GPIO_InitTypeDef GPIO_InitStructure; /聲明初始化結(jié)構(gòu)體GPIO_InitStructure.GPIO_Pin
32、= GPIO_Pin_6 | GPIO_Pin_7; /指定IO口GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /模式為復(fù)用推挽輸出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /最大速度50MHzGPIO_Init(GPIOA, &GPIO_InitStructure); /執(zhí)行GPIO初始化GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; /指定IO口GPIO_Init(GPIOB, &GPIO_InitStru
33、cture); /執(zhí)行GPIO初始化TIM3 PWM 波占空比裝載函數(shù)TIM_SetCompare4(TIM3,CCR4_Val);T=NxP/72MHz 其中N為周期數(shù),P為分頻數(shù)。N= TIM_Period- CCRx_Val。T即為所配出的PWM的周期。 UART串口UART 功能設(shè)置void UART_ Configuration(void)USART_InitTypeDef USART_InitStructure;/聲明串口結(jié)構(gòu)體 USART_InitStructure.USART_BaudRate = 115200;/波特率為115200 USART_InitStructure.U
34、SART_WordLength = USART_WordLength_8b;/數(shù)據(jù)長度8位 USART_InitStructure.USART_StopBits = USART_StopBits_1;/1位停止位 USART_InitStructure.USART_Parity = USART_Parity_No;/無奇偶校驗(yàn) USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;/不使能硬件流控制 USART_InitStructure.USART_Mode = USART_Mode_Rx
35、 | USART_Mode_Tx;/使能發(fā)送,接收 USART_Init(USART1, &USART_InitStructure);/初始化串口 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);/串口接收中斷使能/USART_ITConfig(USART1, USART_IT_TXE, ENABLE); /串口發(fā)送中斷使能 USART_Cmd(USART1, ENABLE);/串口使能UART IO口設(shè)置void UART_ GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructur
36、e;/聲明GPIO結(jié)構(gòu)體RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1| RCC_APB2Periph_AFIO, ENABLE);/使能串口1,復(fù)用IO時(shí)鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);/使能GPIOA時(shí)鐘 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF
37、_PP;/GPIOA9為串口發(fā)送引腳,設(shè)置為復(fù)用推挽輸出模式 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; /GPIOA10為串口接收引腳,設(shè)置為浮空輸入 GPIO_Init(GPIOA, &GPIO_InitStructure);UART 中斷初始化voi
38、d NVIC_UART_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure;/聲明串口初始化結(jié)構(gòu)體 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);/設(shè)置優(yōu)先級(jí)組 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;/指定中斷類型 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;/設(shè)置先占優(yōu)先級(jí) NVIC_InitStructure.NVIC_IRQChannelSubPrior
39、ity = 0;/設(shè)置從優(yōu)先級(jí) NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/使能中斷 NVIC_Init(&NVIC_InitStructure);/執(zhí)行初始化函數(shù)UART 常用函數(shù)while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) = RESET);/等待接收為空 chars = (USART_ReceiveData(USART1); /接收字符 USART_SendData(USART1, chars);/發(fā)送接收到的字符while(USART_GetFlagStatus(USAR
40、T1, USART_FLAG_TXE) = RESET);/等待發(fā)送完成UART 中斷函數(shù)void USART1_IRQHandler(void)/串口1全局中斷 unsigned char RxBuffer=0; if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)/如果是接收中斷 RxBuffer = USART_ReceiveData(USART1);/緩存接收的數(shù)據(jù) USART_ClearITPendingBit(USART1, USART_IT_RXNE);/清中斷標(biāo)志位 if(USART_GetITStatus(USART1,
41、USART_IT_TXE) != RESET)/如果是發(fā)送中斷 DMA直接內(nèi)存存取DMA 初始化void DMA_ Configuration(void) RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);/使能時(shí)鐘 DMA_DeInit(DMA1_Channel1);/將DMA1通道1初始化為缺省值 DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;/設(shè)定外設(shè)基地址,AD的地址為0x4001244C DMA_InitStructure.DMA_MemoryBaseAddr =
42、 (u32)ADCConvertedValue;/設(shè)定內(nèi)存基地址,如果是數(shù)組直接寫數(shù)組名。 DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&aa;/如果是單個(gè)變量,需要加”&”取地址符 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;/外設(shè)為數(shù)據(jù)源頭 DMA_InitStructure.DMA_BufferSize = 16;/緩存區(qū)數(shù)據(jù)大小,根據(jù)設(shè)定的數(shù)組大小定就可以 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralI
43、nc_Disable;/外設(shè)地址自加禁止,如果有多個(gè)外設(shè)綁定一個(gè)DMA通道的時(shí)候可以開啟 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;/內(nèi)部存儲(chǔ)地址自加使能,如果是單個(gè)變量可以禁止 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;/外設(shè)數(shù)據(jù)寬度 16位 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;/內(nèi)部存儲(chǔ)數(shù)據(jù)寬度16位 DMA_InitS
44、tructure.DMA_Mode = DMA_Mode_Circular;/循環(huán)模式 DMA_InitStructure.DMA_Priority = DMA_Priority_High;/DMA通道優(yōu)先級(jí) DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;/禁止內(nèi)存到內(nèi)存的傳輸 DMA_Init(DMA1_Channel1, &DMA_InitStructure); /* Enable DMA1 channel1 */ DMA_Cmd(DMA1_Channel1, ENABLE);/DMA總使能AD模數(shù)轉(zhuǎn)換AD初始化void ADC_Confi
45、guration(void) ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;/ADC獨(dú)立模式 ADC_InitStructure.ADC_ScanConvMode = ENABLE;/使能掃描轉(zhuǎn)換模式 ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;/使能連續(xù)轉(zhuǎn)換模式 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;/沒有外部觸發(fā)源/ADC_ExternalTrigInjecConv_T1_TRGO 選擇
46、定時(shí)器 1 的 TRGO作為注入轉(zhuǎn)換外部觸發(fā) /ADC_ExternalTrigInjecConv_T1_CC4 選擇定時(shí)器1的捕獲比較4作為注入轉(zhuǎn)換外部觸發(fā) /ADC_ExternalTrigInjecConv_T2_TRGO 選擇定時(shí)器 2 的 TRGO作為注入轉(zhuǎn)換外部觸發(fā) /ADC_ExternalTrigInjecConv_T2_CC1 選擇定時(shí)器2的捕獲比較1作為注入轉(zhuǎn)換外部觸發(fā) /ADC_ExternalTrigInjecConv_T3_CC4 選擇定時(shí)器3的捕獲比較4作為注入轉(zhuǎn)換外部觸發(fā) /ADC_ExternalTrigInjecConv_T4_TRGO 選擇定時(shí)器 4 的 TRGO作為注入轉(zhuǎn)換外部觸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 股東合作協(xié)議及條款詳解
- 2025年長沙貨車從業(yè)資格證模擬考試
- 3D打印技術(shù)與設(shè)備應(yīng)用指南
- 2025年深圳道路運(yùn)輸從業(yè)資格證考哪些項(xiàng)目
- 個(gè)人挖機(jī)機(jī)械租賃合同5篇
- 安全性評(píng)價(jià)技術(shù)服務(wù)合同
- 2025年寧夏道路貨運(yùn)駕駛員從業(yè)資格證考試題庫完整
- 建筑工程木工合同
- 辦公信息化解決方案報(bào)告
- 交通意外事故賠償協(xié)議書
- 三年級(jí)語文 溪居即事市賽一等獎(jiǎng)
- 2024年山東化工職業(yè)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 《新病歷書寫規(guī)范》課件
- 2024年中小學(xué)生守則修訂版
- 博覽會(huì)展位裝修及布展投標(biāo)方案技術(shù)標(biāo)
- 顧客提問的問題100條
- 肝膿腫教學(xué)查房課件
- 跳繩之雙腳跳教案
- 拇外翻護(hù)理課件
- 六年級(jí)英語教學(xué)隨筆5篇
- 讀書分享交流會(huì)《從一到無窮大》課件
評(píng)論
0/150
提交評(píng)論