Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

analogdaten_in_c_erfassen [2014/10/02 13:08]
huwaldt
analogdaten_in_c_erfassen [2019/02/04 14:10]
Zeile 1: Zeile 1:
-====== Analogdaten erfassen ====== 
-... 
- 
->><​code cpp> 
-//​---------------------------------------------------------------------- 
-// Titel     : ADC-UART Beispiel für den STM32F407 ​ 
-//​---------------------------------------------------------------------- 
-// Funktion ​ : sendet einen Analogwert an den PC 
-// Schaltung : UART RxD an PD8 
-//​---------------------------------------------------------------------- 
-// Hardware ​ : STM32F4 Discovery 
-// MCU       : STM32F407VGT6 
-// Takt      : 168 MHz 
-// Sprache ​  : ARM C 
-// Datum     : 21.01.2013 
-// Version ​  : 1 
-// Autor     : Alexander Huwaldt 
-//​---------------------------------------------------------------------- 
-#include <​stddef.h>​ 
-#include <​stdlib.h>​ 
-#include "​hardware.h"​ 
-  
-void initApplication() 
-{ 
- SysTick_Config(SystemCoreClock/​100);​ 
-  
- // UART3 RxT an PortD8 9600,8,n,1 
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,​ENABLE);​ 
- GPIO_InitTypeDef ​ GPIO_InitStructure;​ 
- GPIO_StructInit (&​GPIO_InitStructure);​ 
- GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8; 
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;​ 
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;​ 
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;​ 
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;​ 
- GPIO_Init(GPIOD,​ &​GPIO_InitStructure);​ 
- GPIO_PinAFConfig(GPIOD,​GPIO_PinSource8,​GPIO_AF_USART3);​ 
-  
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,​ENABLE);​ 
- USART_InitTypeDef USART_InitStructure;​ 
- USART_InitStructure.USART_BaudRate = 9600; 
- USART_InitStructure.USART_WordLength = USART_WordLength_8b;​ 
- USART_InitStructure.USART_StopBits = USART_StopBits_1;​ 
- USART_InitStructure.USART_Parity = USART_Parity_No;​ 
- USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;​ 
- USART_InitStructure.USART_Mode = USART_Mode_Tx;​ 
- USART_Init(USART3,​ &​USART_InitStructure);​  
- USART_Cmd(USART3,​ ENABLE); 
-  
-  
- // ADC1 Chanel11 an PC1  
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,​ENABLE);​ 
- GPIO_StructInit (&​GPIO_InitStructure);​ 
- GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_1; 
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;​ 
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;​ 
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;​ 
- GPIO_Init(GPIOC,​ &​GPIO_InitStructure);​ 
-  
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,​ ENABLE); 
- ADC_CommonInitTypeDef ADC_CommonInitStructure;​ 
- ADC_CommonStructInit(&​ADC_CommonInitStructure);​  
- ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;​ 
- ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div6;​ 
- ADC_CommonInit(&​ADC_CommonInitStructure);​ 
- ADC_InitTypeDef ADC_InitStructure;​ 
- ADC_StructInit(&​ADC_InitStructure);​  
- ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; 
- ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;​ 
- ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b;​ 
- ADC_Init(ADC1,​ &​ADC_InitStructure);​ 
- ADC_RegularChannelConfig(ADC1,​ ADC_Channel_11,​ 1, ADC_SampleTime_28Cycles);​ 
- ADC_Cmd(ADC1,​ ENABLE); 
- ADC_SoftwareStartConv(ADC1);​ 
-  
-} 
- 
-int main(void) 
-{ 
- SystemInit();​ 
- initApplication();​ 
- uint8_t data=0; 
- do{ 
- waitMs(10);​ 
- data=ADC_GetConversionValue(ADC1);​ 
- USART_SendData(USART3,​data);​ 
- } while (true); 
- return 0; 
-} 
- 
-extern "​C"​ void SysTick_Handler(void) 
-{ 
- // Application SysTick 
-} 
-</​code>​ 
- 
- 
-[[weiterführende Programmierung des STM32 in C|zurück zur Übersicht]]