Advertisement
Guest User

Untitled

a guest
May 4th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.49 KB | None | 0 0
  1. /* Includes ------------------------------------------------------------------*/
  2. #include "main.h"
  3. #include "wifi_interface.h"
  4. #include "stdio.h"
  5. #include "string.h"
  6. #include "wifi_module.h"
  7. #include <stdlib.h>
  8. #include <errno.h>
  9.  
  10. #define APPLICATION_DEBUG_MSG 1
  11.  
  12. uint32_t timerValue;
  13. char strValue[50];
  14. int g_ADCValue;
  15. int g_MeasurementNumber;
  16.  
  17. /* UART handler declaration */
  18. UART_HandleTypeDef UartHandle;
  19. /* Current seconds value */
  20. char str[100];
  21.  
  22. void SystemClock_Config(void);
  23. extern UART_HandleTypeDef UartMsgHandle;
  24. extern char print_msg_buff[100000];
  25. /* Private functions ---------------------------------------------------------*/
  26. #define print_uart(arg) { memset(print_msg_buff, 0x00, sizeof(print_msg_buff)); \
  27. sprintf((char*)print_msg_buff,arg); \
  28. HAL_UART_Transmit(&UartMsgHandle, (uint8_t*)print_msg_buff, strlen(print_msg_buff), 100000); }
  29.  
  30. char console_input[5], console_count = 0;
  31.  
  32. ADC_HandleTypeDef g_AdcHandle;
  33.  
  34. void ConfigureADC() {
  35. GPIO_InitTypeDef gpioInit;
  36.  
  37. __GPIOA_CLK_ENABLE()
  38. ;
  39. __ADC1_CLK_ENABLE()
  40. ;
  41.  
  42. gpioInit.Pin = GPIO_PIN_1;
  43. gpioInit.Mode = GPIO_MODE_ANALOG;
  44. gpioInit.Pull = GPIO_NOPULL;
  45. HAL_GPIO_Init(GPIOA, &gpioInit);
  46.  
  47. HAL_NVIC_SetPriority(ADC_IRQn, 0, 0);
  48. HAL_NVIC_EnableIRQ(ADC_IRQn);
  49.  
  50. ADC_ChannelConfTypeDef adcChannel;
  51.  
  52. g_AdcHandle.Instance = ADC1;
  53.  
  54. g_AdcHandle.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV2;
  55. g_AdcHandle.Init.Resolution = ADC_RESOLUTION_12B;
  56. g_AdcHandle.Init.ScanConvMode = DISABLE;
  57. g_AdcHandle.Init.ContinuousConvMode = ENABLE;
  58. g_AdcHandle.Init.DiscontinuousConvMode = DISABLE;
  59. g_AdcHandle.Init.NbrOfDiscConversion = 0;
  60. g_AdcHandle.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  61. g_AdcHandle.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T1_CC1;
  62. g_AdcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  63. g_AdcHandle.Init.NbrOfConversion = 1;
  64. g_AdcHandle.Init.DMAContinuousRequests = ENABLE;
  65. g_AdcHandle.Init.EOCSelection = DISABLE;
  66.  
  67. HAL_ADC_Init(&g_AdcHandle);
  68.  
  69. adcChannel.Channel = ADC_CHANNEL_1;
  70. adcChannel.Rank = 1;
  71. adcChannel.SamplingTime = ADC_SAMPLETIME_144CYCLES;
  72. adcChannel.Offset = 0;
  73.  
  74. if (HAL_ADC_ConfigChannel(&g_AdcHandle, &adcChannel) != HAL_OK) {
  75. asm("bkpt 255");
  76. }
  77. }
  78. DMA_HandleTypeDef g_DmaHandle;
  79. DMA_HandleTypeDef DMA_Uart_Handle;
  80. void ConfigureDMA_ADC() {
  81. __DMA2_CLK_ENABLE()
  82. ;
  83. g_DmaHandle.Instance = DMA2_Stream4;
  84.  
  85. g_DmaHandle.Init.Channel = DMA_CHANNEL_0;
  86. g_DmaHandle.Init.Direction = DMA_PERIPH_TO_MEMORY;
  87. g_DmaHandle.Init.PeriphInc = DMA_PINC_DISABLE;
  88. g_DmaHandle.Init.MemInc = DMA_MINC_ENABLE;
  89. g_DmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
  90. g_DmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
  91. g_DmaHandle.Init.Mode = DMA_CIRCULAR;
  92. g_DmaHandle.Init.Priority = DMA_PRIORITY_HIGH;
  93. g_DmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
  94. g_DmaHandle.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_HALFFULL;
  95. g_DmaHandle.Init.MemBurst = DMA_MBURST_SINGLE;
  96. g_DmaHandle.Init.PeriphBurst = DMA_PBURST_SINGLE;
  97.  
  98. HAL_DMA_Init(&g_DmaHandle);
  99.  
  100. __HAL_LINKDMA(&g_AdcHandle, DMA_Handle, g_DmaHandle);
  101.  
  102. HAL_NVIC_SetPriority(DMA2_Stream4_IRQn, 0, 0);
  103. HAL_NVIC_EnableIRQ(DMA2_Stream4_IRQn);
  104. }
  105.  
  106. TIM_HandleTypeDef TIM_Handle;
  107.  
  108. uint32_t count = 0;
  109. void TIM4_IRQHandler(void) {
  110.  
  111. if (__HAL_TIM_GET_FLAG(&TIM_Handle, TIM_FLAG_UPDATE) != RESET) //In case other interrupts are also running
  112. if (count == 60000000) {
  113. printf("%ld\r\n", count);
  114. }
  115. {
  116.  
  117. if (__HAL_TIM_GET_ITSTATUS(&TIM_Handle, TIM_IT_UPDATE) != RESET) {
  118. __HAL_TIM_CLEAR_FLAG(&TIM_Handle, TIM_FLAG_UPDATE);
  119. count = count + 2;
  120.  
  121. }
  122. }
  123.  
  124. }
  125. int ADC_BUFFER_LENGTH = 2048;
  126. int i;
  127. int sum = 0;
  128. uint32_t g_ADCBuffer[2048];
  129. void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* AdcHandle) {
  130. for (i = 0; i < 2048; ++i) {
  131. //printf("%ld\r\n", g_ADCBuffer[i]);
  132.  
  133. }
  134.  
  135. g_MeasurementNumber += ADC_BUFFER_LENGTH;
  136. }
  137. /*void DMA1_Stream6_IRQHandler() {
  138. HAL_DMA_IRQHandler(UartHandle.hdmatx);
  139.  
  140. }*/
  141. void DMA2_Stream4_IRQHandler() {
  142. HAL_DMA_IRQHandler(&g_DmaHandle);
  143. //printf("ccc");
  144. }
  145. void DMA1_Stream6_IRQHandler() {
  146. HAL_DMA_IRQHandler(UartHandle.hdmatx);
  147. HAL_UART_Transmit_DMA(&UartHandle, (uint8_t*) sum, 10);
  148.  
  149. }
  150.  
  151. void ADC_IRQHandler() {
  152. HAL_ADC_IRQHandler(&g_AdcHandle);
  153. }
  154. void USART_IRQHandler(void) {
  155. HAL_UART_IRQHandler(&UartHandle);
  156. }
  157. /*void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* AdcHandle) {
  158. g_ADCValue = HAL_ADC_GetValue(AdcHandle);
  159. if (g_ADCValue < 1500 || g_ADCValue > 2800) {
  160. printf("%d,%ld\r\n", g_ADCValue, count);
  161. }
  162. g_MeasurementNumber++;
  163.  
  164. }*/
  165.  
  166. int main(void) {
  167.  
  168. __TIM4_CLK_ENABLE()
  169. ;
  170. TIM_Handle.Init.Prescaler = 0;
  171. TIM_Handle.Init.ClockDivision = 0;
  172. TIM_Handle.Init.CounterMode = TIM_COUNTERMODE_UP;
  173. TIM_Handle.Init.Period = 31;
  174. TIM_Handle.Init.RepetitionCounter = 0;
  175. TIM_Handle.Instance = TIM4; //Same timer whose clocks we enabled
  176. HAL_TIM_Base_Init(&TIM_Handle); // Init timer
  177. HAL_TIM_Base_Start_IT(&TIM_Handle); // start timer interrupts
  178. HAL_NVIC_SetPriority(TIM4_IRQn, 0, 1);
  179. HAL_NVIC_EnableIRQ(TIM4_IRQn);
  180.  
  181. HAL_Init();
  182. ConfigureADC();
  183. ConfigureDMA_ADC();
  184. HAL_ADC_Start_DMA(&g_AdcHandle, g_ADCBuffer, ADC_BUFFER_LENGTH);
  185. //HAL_ADC_Start_IT(&g_AdcHandle);
  186.  
  187. if (HAL_UART_Init(&UartHandle) != HAL_OK) {
  188. /* Initialization Error */
  189. Error_Handler();
  190. }
  191.  
  192. /* configure the timers */
  193. Timer_Config();
  194. UART_Configuration(115200);
  195. #ifdef USART_PRINT_MSG
  196. UART_Msg_Gpio_Init();
  197. USART_PRINT_MSG_Configuration(115200);
  198. #endif
  199.  
  200. SystemClock_Config();
  201. __HAL_TIM_SetCounter(&TIM_Handle, 0);
  202. //scanf("%s", console_input);
  203. //console_input[4] = 0;
  204.  
  205. //count = *((int *) console_input);
  206.  
  207. while (1) {
  208.  
  209. }
  210. }
  211. void SystemClock_Config(void) {
  212.  
  213. RCC_ClkInitTypeDef RCC_ClkInitStruct;
  214. RCC_OscInitTypeDef RCC_OscInitStruct;
  215.  
  216. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI
  217. | RCC_OSCILLATORTYPE_HSE;
  218. RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  219. RCC_OscInitStruct.LSIState = RCC_LSI_ON;
  220. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  221. RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  222. RCC_OscInitStruct.PLL.PLLM = 18;
  223. RCC_OscInitStruct.PLL.PLLN = 302;
  224. RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
  225. RCC_OscInitStruct.PLL.PLLQ = 4;
  226. HAL_RCC_OscConfig(&RCC_OscInitStruct);
  227.  
  228. RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1;
  229. RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  230. RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  231. HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
  232.  
  233. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement