danieleff

stm32duino variant variables

Oct 10th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 19.64 KB | None | 0 0
  1. #include "variant.h"
  2.  
  3. //--- SPI ---
  4.  
  5. static void SPI1_CLK_ENABLE(void)               { __HAL_RCC_SPI1_CLK_ENABLE();  }
  6. static void SPI1_SCK_GPIO_CLK_ENABLE(void)      { __HAL_RCC_GPIOB_CLK_ENABLE(); }
  7. static void SPI1_MISO_GPIO_CLK_ENABLE(void)     { __HAL_RCC_GPIOA_CLK_ENABLE(); }
  8. static void SPI1_MOSI_GPIO_CLK_ENABLE(void)     { __HAL_RCC_GPIOA_CLK_ENABLE(); }
  9. static void SPI1_Alternate(void)                { __HAL_AFIO_REMAP_SPI1_DISABLE(); }
  10.  
  11. extern spi_init_info_t spi_init_info[NB_SPI_INSTANCES] = {
  12.   {
  13.     .init_done = 0,
  14.     .spi_instance = SPI1,
  15.     .spi_clock_init = SPI1_CLK_ENABLE,
  16.     .spi_sck_clock_init = SPI1_SCK_GPIO_CLK_ENABLE,
  17.     .spi_miso_clock_init = SPI1_MISO_GPIO_CLK_ENABLE,
  18.     .spi_mosi_clock_init = SPI1_MOSI_GPIO_CLK_ENABLE,
  19.     .spi_alternate = SPI1_Alternate,
  20.     .mosi_port = GPIOA,
  21.     .mosi_pin =  GPIO_PIN_7,
  22.     .mosi_speed = GPIO_SPEED_FREQ_HIGH,
  23.     .mosi_pull = GPIO_PULLDOWN,
  24.     .mosi_mode = GPIO_MODE_AF_PP,
  25.     .miso_port = GPIOA,
  26.     .miso_pin = GPIO_PIN_6,
  27.     .miso_speed = GPIO_SPEED_FREQ_HIGH,
  28.     .miso_pull = GPIO_PULLDOWN,
  29.     .miso_mode = GPIO_MODE_AF_PP,
  30.     .sck_port = GPIOA,
  31.     .sck_pin = GPIO_PIN_5,
  32.     .sck_speed = GPIO_SPEED_FREQ_HIGH,
  33.     .sck_pull = GPIO_PULLDOWN,
  34.     .sck_mode = GPIO_MODE_AF_PP
  35.   }
  36. };
  37.  
  38. //--- ADC, DAC, PWM ---
  39.  
  40. #define SAMPLINGTIME  ADC_SAMPLETIME_1CYCLE_5  /*!< ADC conversions sampling time. */
  41.  
  42. static void TIM1_AF_PartialRemap(void)  { __HAL_RCC_AFIO_CLK_ENABLE(); __HAL_AFIO_REMAP_TIM1_PARTIAL();}  // CH1N/A7
  43. static void TIM2_AF_FullRemap(void)     { __HAL_RCC_AFIO_CLK_ENABLE(); __HAL_AFIO_REMAP_TIM2_ENABLE();}   // CH2/B3 CH3/B10
  44. static void TIM3_AF_FullRemap(void)     { __HAL_RCC_AFIO_CLK_ENABLE(); __HAL_AFIO_REMAP_TIM3_ENABLE();}   // CH2/C7
  45. static void TIM3_AF_PartialRemap(void)  { __HAL_RCC_AFIO_CLK_ENABLE(); __HAL_AFIO_REMAP_TIM3_PARTIAL();}  // CH1/B4
  46. static void TIM4_AF_NoRemap(void)       { __HAL_RCC_AFIO_CLK_ENABLE(); __HAL_AFIO_REMAP_TIM4_DISABLE();}  // CH1/B6
  47.  
  48. //Give details about the analog pins.
  49. extern analog_config_str g_analog_config[NB_ANALOG_CHANNELS] = {
  50.   {
  51.     .port = GPIOA,
  52.     .pin = GPIO_PIN_0,
  53.     .adcInstance = ADC1,
  54.     .adcChannelConf = {
  55.       .Channel = ADC_CHANNEL_0,
  56.       .Rank = ADC_REGULAR_RANK_1,
  57.       .SamplingTime = SAMPLINGTIME
  58.     },
  59.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  60.     .dacInstance = NULL,
  61.     #endif
  62.     .timInstance = NULL
  63.   },
  64.   {
  65.     .port = GPIOA,
  66.     .pin = GPIO_PIN_1,
  67.     .adcInstance = ADC1,
  68.     .adcChannelConf = {
  69.       .Channel = ADC_CHANNEL_1,
  70.       .Rank = ADC_REGULAR_RANK_1,
  71.       .SamplingTime = SAMPLINGTIME
  72.     },
  73.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  74.     .dacInstance = NULL,
  75.     #endif
  76.     .timInstance = NULL
  77.   },
  78.   {
  79.     .port = GPIOA,
  80.     .pin = GPIO_PIN_4,
  81.     .adcInstance = ADC1,
  82.     .adcChannelConf = {
  83.       .Channel = ADC_CHANNEL_4,
  84.       .Rank = ADC_REGULAR_RANK_1,
  85.       .SamplingTime = SAMPLINGTIME
  86.     },
  87.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  88.     .dacInstance = NULL,
  89.     #endif
  90.     .timInstance = NULL
  91.   },
  92.   {
  93.     .port = GPIOA,
  94.     .pin = GPIO_PIN_5,
  95.     .adcInstance = ADC1,
  96.     .adcChannelConf = {
  97.       .Channel = ADC_CHANNEL_5,
  98.       .Rank = ADC_REGULAR_RANK_1,
  99.       .SamplingTime = SAMPLINGTIME
  100.     },
  101.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  102.     .dacInstance = NULL,
  103.     #endif
  104.     .timInstance = NULL
  105.   },
  106.   {
  107.     .port = GPIOA,
  108.     .pin = GPIO_PIN_7,
  109.     .alFunction = TIM1_AF_PartialRemap,
  110.     .adcInstance = NULL,
  111.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  112.     .dacInstance = NULL,
  113.     #endif
  114.     .timInstance = TIM1,
  115.     .timChannel = TIM_CHANNEL_1,
  116.     .useNchannel = 1,
  117.     .timConfig = {
  118.       .OCMode       = TIM_OCMODE_PWM1,
  119.       .OCPolarity   = TIM_OCPOLARITY_HIGH,
  120.       .OCFastMode   = TIM_OCFAST_DISABLE,
  121.       .OCNPolarity  = TIM_OCNPOLARITY_HIGH,
  122.       .OCNIdleState = TIM_OCNIDLESTATE_RESET,
  123.       .OCIdleState  = TIM_OCIDLESTATE_RESET
  124.      },
  125.      .timHandle = {}
  126.   },
  127.   {
  128.     .port = GPIOA,
  129.     .pin = GPIO_PIN_10,
  130.     .alFunction = NULL,
  131.     .adcInstance = NULL,
  132.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  133.     .dacInstance = NULL,
  134.     #endif
  135.     .timInstance = NULL,
  136.   },
  137.   {
  138.     .port = GPIOB,
  139.     .pin = GPIO_PIN_0,
  140.     .adcInstance = ADC1,
  141.     .adcChannelConf = {
  142.       .Channel = ADC_CHANNEL_8,
  143.       .Rank = ADC_REGULAR_RANK_1,
  144.       .SamplingTime = SAMPLINGTIME
  145.     },
  146.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  147.     .dacInstance = NULL,
  148.     #endif
  149.     .timInstance = NULL
  150.   },
  151.   {
  152.     .port = GPIOB,
  153.     .pin = GPIO_PIN_3,
  154.     .alFunction = TIM2_AF_FullRemap,
  155.     .adcInstance = NULL,
  156.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  157.     .dacInstance = NULL,
  158.     #endif
  159.     .timInstance = TIM2,
  160.     .timChannel = TIM_CHANNEL_2,
  161.     .useNchannel = 0,
  162.     .timConfig = {
  163.       .OCMode       = TIM_OCMODE_PWM1,
  164.       .OCPolarity   = TIM_OCPOLARITY_HIGH,
  165.       .OCFastMode   = TIM_OCFAST_DISABLE,
  166.       .OCNPolarity  = TIM_OCNPOLARITY_HIGH,
  167.       .OCNIdleState = TIM_OCNIDLESTATE_RESET,
  168.       .OCIdleState  = TIM_OCIDLESTATE_RESET
  169.      },
  170.      .timHandle = {}
  171.   },
  172.   {
  173.     .port = GPIOB,
  174.     .pin = GPIO_PIN_4,
  175.     .alFunction = TIM3_AF_PartialRemap,
  176.     .adcInstance = NULL,
  177.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  178.     .dacInstance = NULL,
  179.     #endif
  180.     .timInstance = TIM3,
  181.     .timChannel = TIM_CHANNEL_1,
  182.     .useNchannel = 0,
  183.     .timConfig = {
  184.       .OCMode       = TIM_OCMODE_PWM1,
  185.       .OCPolarity   = TIM_OCPOLARITY_HIGH,
  186.       .OCFastMode   = TIM_OCFAST_DISABLE,
  187.       .OCNPolarity  = TIM_OCNPOLARITY_HIGH,
  188.       .OCNIdleState = TIM_OCNIDLESTATE_RESET,
  189.       .OCIdleState  = TIM_OCIDLESTATE_RESET
  190.      },
  191.      .timHandle = {}
  192.   },
  193.   {
  194.     .port = GPIOB,
  195.     .pin = GPIO_PIN_5,
  196.     .adcInstance = NULL,
  197.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  198.     .dacInstance = NULL,
  199.     #endif
  200.     .timInstance = NULL
  201.   },
  202.   {
  203.     .port = GPIOB,
  204.     .pin = GPIO_PIN_6,
  205.     .alFunction = TIM4_AF_NoRemap,
  206.     .adcInstance = NULL,
  207.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  208.     .dacInstance = NULL,
  209.     #endif
  210.     .timInstance = TIM4,
  211.     .timChannel = TIM_CHANNEL_1,
  212.     .useNchannel = 0,
  213.     .timConfig = {
  214.       .OCMode       = TIM_OCMODE_PWM1,
  215.       .OCPolarity   = TIM_OCPOLARITY_HIGH,
  216.       .OCFastMode   = TIM_OCFAST_DISABLE,
  217.       .OCNPolarity  = TIM_OCNPOLARITY_HIGH,
  218.       .OCNIdleState = TIM_OCNIDLESTATE_RESET,
  219.       .OCIdleState  = TIM_OCIDLESTATE_RESET
  220.      },
  221.      .timHandle = {}
  222.   },
  223.   {
  224.     .port = GPIOB,
  225.     .pin = GPIO_PIN_10,
  226.     .alFunction = TIM2_AF_FullRemap,
  227.     .adcInstance = NULL,
  228.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  229.     .dacInstance = NULL,
  230.     #endif
  231.     .timInstance = TIM2,
  232.     .timChannel = TIM_CHANNEL_3,
  233.     .useNchannel = 0,
  234.     .timConfig = {
  235.       .OCMode       = TIM_OCMODE_PWM1,
  236.       .OCPolarity   = TIM_OCPOLARITY_HIGH,
  237.       .OCFastMode   = TIM_OCFAST_DISABLE,
  238.       .OCNPolarity  = TIM_OCNPOLARITY_HIGH,
  239.       .OCNIdleState = TIM_OCNIDLESTATE_RESET,
  240.       .OCIdleState  = TIM_OCIDLESTATE_RESET
  241.      }
  242.   },
  243.   {
  244.     .port = GPIOC,
  245.     .pin = GPIO_PIN_0,
  246.     .adcInstance = ADC1,
  247.     .adcChannelConf = {
  248.       .Channel = ADC_CHANNEL_10,
  249.       .Rank = ADC_REGULAR_RANK_1,
  250.       .SamplingTime = SAMPLINGTIME
  251.     },
  252.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  253.     .dacInstance = NULL,
  254.     #endif
  255.     .timInstance = NULL
  256.   },
  257.   {
  258.     .port = GPIOC,
  259.     .pin = GPIO_PIN_1,
  260.     .adcInstance = ADC1,
  261.     .adcChannelConf = {
  262.       .Channel = ADC_CHANNEL_11,
  263.       .Rank = ADC_REGULAR_RANK_1,
  264.       .SamplingTime = SAMPLINGTIME
  265.     },
  266.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  267.     .dacInstance = NULL,
  268.     #endif
  269.     .timInstance = NULL
  270.   },
  271.   {
  272.     .port = GPIOC,
  273.     .pin = GPIO_PIN_7,
  274.     .alFunction = TIM3_AF_FullRemap,
  275.     .adcInstance = NULL,
  276.     #if defined (STM32F100xB) || defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
  277.     .dacInstance = NULL,
  278.     #endif
  279.     .timInstance = TIM3,
  280.     .timChannel = TIM_CHANNEL_2,
  281.     .useNchannel = 0,
  282.     .timConfig = {
  283.       .OCMode       = TIM_OCMODE_PWM1,
  284.       .OCPolarity   = TIM_OCPOLARITY_HIGH,
  285.       .OCFastMode   = TIM_OCFAST_DISABLE,
  286.       .OCNPolarity  = TIM_OCNPOLARITY_HIGH,
  287.       .OCNIdleState = TIM_OCNIDLESTATE_RESET,
  288.       .OCIdleState  = TIM_OCIDLESTATE_RESET
  289.      },
  290.      .timHandle = {}
  291.   },
  292. };
  293.  
  294.  
  295. //---  Interrupt ---
  296.  
  297. #define NB_EXTI   (16)
  298.  
  299. extern gpio_irq_conf_str gpio_irq_conf[NB_EXTI] = {
  300.   {.pin = GPIO_PIN_0,   .irqnb = EXTI0_IRQn,    .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  301.   {.pin = GPIO_PIN_1,   .irqnb = EXTI1_IRQn,    .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  302.   {.pin = GPIO_PIN_2,   .irqnb = EXTI2_IRQn,    .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  303.   {.pin = GPIO_PIN_3,   .irqnb = EXTI3_IRQn,    .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  304.   {.pin = GPIO_PIN_4,   .irqnb = EXTI4_IRQn,    .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  305.   {.pin = GPIO_PIN_5,   .irqnb = EXTI9_5_IRQn,  .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  306.   {.pin = GPIO_PIN_6,   .irqnb = EXTI9_5_IRQn,  .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  307.   {.pin = GPIO_PIN_7,   .irqnb = EXTI9_5_IRQn,  .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  308.   {.pin = GPIO_PIN_8,   .irqnb = EXTI9_5_IRQn,  .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  309.   {.pin = GPIO_PIN_9,   .irqnb = EXTI9_5_IRQn,  .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  310.   {.pin = GPIO_PIN_10,  .irqnb = EXTI15_10_IRQn,  .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  311.   {.pin = GPIO_PIN_11,  .irqnb = EXTI15_10_IRQn,  .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  312.   {.pin = GPIO_PIN_12,  .irqnb = EXTI15_10_IRQn,  .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  313.   {.pin = GPIO_PIN_13,  .irqnb = EXTI15_10_IRQn,  .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  314.   {.pin = GPIO_PIN_14,  .irqnb = EXTI15_10_IRQn,  .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 },
  315.   {.pin = GPIO_PIN_15,  .irqnb = EXTI15_10_IRQn,  .callback = NULL, .mode = GPIO_MODE_IT_RISING, .configured = 0 }
  316. };
  317.  
  318. //--- Timer ---
  319.  
  320. static void tim1_clock_enable(void)   { __TIM1_CLK_ENABLE(); }
  321. static void tim1_clock_reset(void)    { __TIM1_CLK_DISABLE(); }
  322. static void tim2_clock_enable(void)   { __TIM2_CLK_ENABLE(); }
  323. static void tim2_clock_reset(void)    { __TIM2_CLK_DISABLE(); }
  324. static void tim3_clock_enable(void)   { __TIM3_CLK_ENABLE(); }
  325. static void tim3_clock_reset(void)    { __TIM3_CLK_DISABLE(); }
  326. static void tim4_clock_enable(void)   { __TIM4_CLK_ENABLE(); }
  327. static void tim4_clock_reset(void)    { __TIM4_CLK_DISABLE(); }
  328.  
  329. extern timer_conf_t g_timer_config[NB_TIMER_MANAGED] = {
  330.   {
  331.     //TIMER ID and IRQ
  332.     .timInstance = TIM1, .irqtype = TIM1_UP_IRQn,
  333.     .irqHandle = NULL,
  334.     .irqHandleOC = NULL,
  335.     .timer_mode = TIMER_OTHER,
  336.     //timer clock init
  337.     .timer_clock_init = tim1_clock_enable,
  338.     //timer clock reset
  339.     .timer_clock_reset = tim1_clock_reset,
  340.     //timer prescaler limit : 8 or 16 bits
  341.     .prescalerLimit = bits_16,
  342.     //toggle pin configuration
  343.     .toggle_pin = { .port = NULL },
  344.     .configured = 0
  345.   },
  346.   {
  347.     //TIMER ID and IRQ
  348.     .timInstance = TIM2, .irqtype = TIM2_IRQn,
  349.     .irqHandle = NULL,
  350.     .irqHandleOC = NULL,
  351.     .timer_mode = TIMER_OTHER,
  352.     //timer clock init
  353.     .timer_clock_init = tim2_clock_enable,
  354.     //timer clock reset
  355.     .timer_clock_reset = tim2_clock_reset,
  356.     //timer prescaler limit : 8 or 16 bits
  357.     .prescalerLimit = bits_16,
  358.     //toggle pin configuration
  359.     .toggle_pin = { .port = NULL },
  360.     .configured = 0
  361.   },
  362.   {
  363.     //TIMER ID and IRQ
  364.     .timInstance = TIM3, .irqtype = TIM3_IRQn,
  365.     .irqHandle = NULL,
  366.     .irqHandleOC = NULL,
  367.     .timer_mode = TIMER_OTHER,
  368.     //timer clock init
  369.     .timer_clock_init = tim3_clock_enable,
  370.     //timer clock reset
  371.     .timer_clock_reset = tim3_clock_reset,
  372.     //timer prescaler limit : 8 or 16 bits
  373.     .prescalerLimit = bits_16,
  374.     //toggle pin configuration
  375.     .toggle_pin = { .port = NULL },
  376.     .configured = 0
  377.   },
  378.   {
  379.     //TIMER ID and IRQ
  380.     .timInstance = TIM4, .irqtype = TIM4_IRQn,
  381.     .irqHandle = NULL,
  382.     .irqHandleOC = NULL,
  383.     .timer_mode = TIMER_OTHER,
  384.     //timer clock init
  385.     .timer_clock_init = tim4_clock_enable,
  386.     //timer clock reset
  387.     .timer_clock_reset = tim4_clock_reset,
  388.     //timer prescaler limit : 8 or 16 bits
  389.     .prescalerLimit = bits_16,
  390.     //toggle pin configuration
  391.     .toggle_pin = { .port = NULL },
  392.     .configured = 0
  393.   }
  394. };
  395.  
  396. //--- I2C ---
  397.  
  398. static void i2c1_clk_enable(void)      { __HAL_RCC_I2C1_CLK_ENABLE();    }
  399. static void i2c1_clk_disable(void)     { __HAL_RCC_I2C1_CLK_DISABLE();   }
  400. static void i2c1_scl_clk_enable(void)  { __HAL_RCC_GPIOB_CLK_ENABLE();   }
  401. static void i2c1_sda_clk_enable(void)  { __HAL_RCC_GPIOB_CLK_ENABLE();   }
  402. static void i2c1_scl_clk_disable(void) { __HAL_RCC_GPIOB_CLK_DISABLE();  }
  403. static void i2c1_sda_clk_disable(void) { __HAL_RCC_GPIOB_CLK_DISABLE();  }
  404. static void i2c1_force_reset(void)     { __I2C1_FORCE_RESET();           }
  405. static void i2c1_release_reset(void)   { __I2C1_RELEASE_RESET();         }
  406. static void i2c1_alternate(void)       {  __HAL_RCC_AFIO_CLK_ENABLE(); __HAL_AFIO_REMAP_I2C1_ENABLE(); }
  407.  
  408. extern i2c_init_info_t g_i2c_init_info[NB_I2C_INSTANCES] = {
  409.   {
  410.     .init_done = 0,
  411.     .i2c_instance = I2C1,
  412.     .irq = I2C1_EV_IRQn,
  413.     .i2c_clock_init = i2c1_clk_enable,
  414.     .i2c_scl_clock_init = i2c1_scl_clk_enable,
  415.     .i2c_sda_clock_init = i2c1_sda_clk_enable,
  416.     .i2c_clock_deinit = i2c1_clk_disable,
  417.     .i2c_scl_clock_deinit = i2c1_scl_clk_disable,
  418.     .i2c_sda_clock_deinit = i2c1_sda_clk_disable,
  419.     .i2c_force_reset = i2c1_force_reset,
  420.     .i2c_release_reset = i2c1_release_reset,
  421.     .i2c_alternate = i2c1_alternate,
  422.     .sda_port = GPIOB,
  423.     .sda_pin = GPIO_PIN_9,
  424.     .sda_mode = GPIO_MODE_AF_OD,
  425.     .sda_pull = GPIO_PULLUP,
  426.     .sda_speed = GPIO_SPEED_FREQ_HIGH,
  427.     .scl_port = GPIOB,
  428.     .scl_pin = GPIO_PIN_8,
  429.     .scl_mode = GPIO_MODE_AF_OD,
  430.     .scl_pull = GPIO_PULLUP,
  431.     .scl_speed = GPIO_SPEED_FREQ_HIGH,
  432.     .i2c_onSlaveReceive = NULL,
  433.     .i2c_onSlaveTransmit = NULL,
  434.     .i2cTxRxBufferSize = 0
  435.   }
  436. };
  437.  
  438. //----
  439. //UART
  440. //----
  441.  
  442. static void usart1_clock_enable(void)   { __HAL_RCC_USART1_CLK_ENABLE(); }
  443. static void usart1_force_reset(void)    { __HAL_RCC_USART1_FORCE_RESET(); }
  444. static void usart1_release_reset(void)  { __HAL_RCC_USART1_RELEASE_RESET(); }
  445. static void usart2_clock_enable(void)   { __HAL_RCC_USART2_CLK_ENABLE(); }
  446. static void usart2_force_reset(void)    { __HAL_RCC_USART2_FORCE_RESET(); }
  447. static void usart2_release_reset(void)  { __HAL_RCC_USART2_RELEASE_RESET(); }
  448. static void gpioa_clock_enable(void)    { __HAL_RCC_GPIOA_CLK_ENABLE(); }
  449. static void gpiob_clock_enable(void)    { __HAL_RCC_GPIOB_CLK_ENABLE(); }
  450.  
  451. static void USART1_AF_Remap(void)       {__HAL_RCC_AFIO_CLK_ENABLE(); __HAL_AFIO_REMAP_USART1_DISABLE();}
  452. static void USART2_AF_Remap(void)       {__HAL_RCC_AFIO_CLK_ENABLE(); __HAL_AFIO_REMAP_USART2_DISABLE();}
  453.  
  454. extern uart_conf_t g_uart_config[NB_UART_MANAGED] = {
  455.   //USART1 (PA9/PA10)
  456.   {
  457.     //UART ID and IRQ
  458.     .usart_typedef = USART1, .irqtype = USART1_IRQn,
  459.     //tx pin configuration
  460.     .tx_port = GPIOA, .tx_pin = {GPIO_PIN_9, GPIO_MODE_AF_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_HIGH},
  461.     //rx pin configuration
  462.     .rx_port = GPIOA, .rx_pin = {GPIO_PIN_10, GPIO_MODE_INPUT, GPIO_PULLUP, GPIO_SPEED_FREQ_HIGH},
  463.     .uart_af_remap = USART1_AF_Remap,
  464.     //uart clock init
  465.     .uart_clock_init = usart1_clock_enable,
  466.     //uart force reset
  467.     .uart_force_reset = usart1_force_reset,
  468.     //uart release reset
  469.     .uart_release_reset = usart1_release_reset,
  470.     //TX gpio clock init
  471.     .gpio_tx_clock_init = gpioa_clock_enable,
  472.     //RX gpio clock init
  473.     .gpio_rx_clock_init = gpioa_clock_enable,
  474.     .data_available = 0,
  475.     .begin = 0,
  476.     .end = 0,
  477.     .uart_option = NATIVE_UART_E
  478.   },
  479.   //USART2 (PA2/PA3)
  480.   {
  481.     .usart_typedef = USART2, .irqtype = USART2_IRQn,
  482.     //tx pin configuration
  483.     .tx_port = GPIOA, .tx_pin = {GPIO_PIN_2, GPIO_MODE_AF_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_HIGH},
  484.     //rx pin configuration
  485.     .rx_port = GPIOA, .rx_pin = {GPIO_PIN_3, GPIO_MODE_AF_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_HIGH},
  486.     .uart_af_remap = USART2_AF_Remap,
  487.     //uart clock init
  488.     .uart_clock_init = usart2_clock_enable,
  489.     //uart force reset
  490.     .uart_force_reset = usart2_force_reset,
  491.     //uart release reset
  492.     .uart_release_reset = usart2_release_reset,
  493.     //TX gpio clock init
  494.     .gpio_tx_clock_init = gpioa_clock_enable,
  495.     //RX gpio clock init
  496.     .gpio_rx_clock_init = gpioa_clock_enable,
  497.     .data_available = 0,
  498.     .begin = 0,
  499.     .end = 0,
  500.     .uart_option = NATIVE_UART_E
  501.   }
  502. };
  503.  
  504. extern uart_emul_conf_t g_uartEmul_config[NB_UART_EMUL_MANAGED] = {
  505.   {
  506.     .uartEmul_typedef = {UART1_EMUL_E},
  507.     .tx_port = GPIOB, .tx_pin = {GPIO_PIN_3, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_HIGH},
  508.     .rx_port = GPIOA, .rx_pin = {GPIO_PIN_10, GPIO_MODE_IT_FALLING, GPIO_PULLUP, GPIO_SPEED_FREQ_HIGH},
  509.     .gpio_tx_clock_init = gpiob_clock_enable,
  510.     .gpio_rx_clock_init = gpioa_clock_enable,
  511.     .uart_rx_irqHandle = NULL,
  512.     .data_available = 0,
  513.     .begin = 0,
  514.     .end = 0,
  515.     .uart_option = EMULATED_UART_E
  516.   }
  517. };
Add Comment
Please, Sign In to add comment