main.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #include "stm32f4xx.h"
  2. #include "wdg.h"
  3. #include "FreeRTOS.h"
  4. #include "task.h"
  5. #include "common_config.h"
  6. #include "settings_api.h"
  7. #include "gpio.h"
  8. #include "main.h"
  9. #include "init_task.h"
  10. #include "log.h"
  11. #include "spi_flash.h"
  12. /* Размещение стека FreeRTOS в CCRAM */
  13. #if defined ( __ICCARM__ )
  14. #pragma location = ".sram"
  15. uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];
  16. #else
  17. uint8_t ucHeap[ configTOTAL_HEAP_SIZE ] __attribute__ ((section (".mb1text")));
  18. /* Секция размещения СRC прошивки */
  19. uint32_t crc __attribute__ ((section (".crc"))) = 0xAABBCCDD;
  20. /* Секция размещения HW ревизии платы */
  21. char hw_rev[HW_REV_LEN] __attribute__ ((section (".hw_rev"))) = HW_REV;
  22. #endif
  23. void vApplicationTickHook(void) {
  24. }
  25. int main()
  26. {
  27. TIM_Cmd(TIM13, DISABLE);
  28. TIM_ClearITPendingBit(TIM13, TIM_IT_Update);
  29. __disable_irq();
  30. NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x20000);
  31. NVIC_SetPriorityGrouping(0);
  32. NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 );
  33. __enable_irq();
  34. RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);
  35. /* Clear flash error flags if were set */
  36. FLASH_ClearFlag(FLASH_FLAG_PGPERR);
  37. FLASH_ClearFlag(FLASH_FLAG_PGSERR);
  38. /* if (FLASH_OB_GetRDP() != SET) {
  39. FLASH_Unlock(); // this line is critical!
  40. FLASH_OB_Unlock();
  41. FLASH_OB_RDPConfig(OB_RDP_Level_1);
  42. FLASH_OB_Launch(); // Option Bytes programming
  43. FLASH_OB_Lock();
  44. FLASH_Lock();
  45. }*/
  46. gpio_init();
  47. WDG_Init();
  48. spi_flash_init();
  49. //log_init(false);
  50. //log_test();
  51. //spi_flash_test();
  52. // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
  53. init_settings();
  54. xTaskCreate( InitTask, "InitTask", 1000, NULL, tskIDLE_PRIORITY, NULL);
  55. vTaskStartScheduler();
  56. return 0;
  57. /*while(1)
  58. {
  59. }*/
  60. }