#include "Bala_STM32.h"
#include <string.h>
void delay1(volatile long int a){
for(volatile long int i=0;i<a;i++){
}
}
int main(void){
GPIO_Handle_t GPIOHandle;
RCC_GPIOClockControl(GPIOA, ENABLE);
GPIOHandle.pGPIOx = GPIOA;
GPIOHandle.GPIO_PinConfig.PinMode = GPIO_MODE_ALTFN;
GPIOHandle.GPIO_PinConfig.PinAltFunMode = GPIO_AF1;
GPIOHandle.GPIO_PinConfig.PinSpeed = GPIO_SPEED_LOW;
GPIOHandle.GPIO_PinConfig.PinPullControl = GPIO_NO_PUPD;
GPIOHandle.GPIO_PinConfig.PinOutputType = GPIO_OP_TYPE_PP;
/* PA9 */
GPIOHandle.GPIO_PinConfig.PinNumber = 2;
GPIO_Init(&GPIOHandle);
/* PA10 */
GPIOHandle.GPIO_PinConfig.PinNumber = GPIO_PIN_3;
GPIO_Init(&GPIOHandle);
GPIOHandle.GPIO_PinConfig.PinNumber = GPIO_PIN_0;
GPIOHandle.GPIO_PinConfig.PinMode = GPIO_MODE_ANALOG;
GPIOHandle.GPIO_PinConfig.PinPullControl = GPIO_NO_PUPD;
GPIO_Init(&GPIOHandle);
/* ADC */
ADC_Handle_t ADCHandle;
ADCHandle.pADCx = ADC;
ADCHandle.ADC_Config.Channel = ADC_CHANNEL_0;
ADCHandle.ADC_Config.SamplingTime1 = ADC_SAMPLE_TIME_12_5_CYCLES;
ADCHandle.ADC_Config.SamplingTime2 = ADC_SAMPLE_TIME_79_5_CYCLES;
ADCHandle.ADC_Config.ChannelSamplingSelection = ADC_USE_SMP1;
ADCHandle.ADC_Config.Resolution = ADC_RESOLUTION_10BIT;
RCC_ADCClockControl(ADC, ENABLE);
ADC_Init(&ADCHandle);
/* UART */
UART_Handle_t UARTHandle;
UARTHandle.pUSARTx=USART2;
UARTHandle.UART_Config.Mode=UART_MODE_TX_RX;
UARTHandle.UART_Config.WordLength=UART_WORDLEN_8BITS;
UARTHandle.UART_Config.ParityControl=UART_PARITY_NONE;
UARTHandle.UART_Config.StopBits=UART_STOPBIT_1;
UARTHandle.UART_Config.BaudRate=115200;
RCC_USARTClockControl(USART2,ENABLE);
UART_Init(&UARTHandle);
UART_PeripheralControl(USART2, ENABLE);
char *str="Hello this is Bala\n";
UART_Transmit(&UARTHandle,str,strlen(str));
delay1(100000);
/* RX loopback test
uint8_t Rx;
while(1)
{
UART_Receive(&UARTHandle, &Rx, 1);
UART_Transmit(&UARTHandle, &Rx, 1); // echo back
}
*/
ADC_PeripheralControl(&ADCHandle, ENABLE);
uint16_t ADCValue;
char Buffer[20];
while(1)
{
ADC_StartConversion(&ADCHandle);
while(!ADC_PollForConversion(&ADCHandle))
{
}
ADCValue = ADC_GetConversionValue(&ADCHandle);
sprintf(Buffer,"ADC : %d\r\n",ADCValue);
UART_Transmit(&UARTHandle,
(uint8_t*)Buffer,
strlen(Buffer));
delay1(100000);
}
}