Difference in Library Drivers

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
BaT_3785171
Level 2
Level 2
First like given

I am working on  43xxx_Wi-Fi project  (WICED studio 6.1 installed in my PC)
I have a small doubt.
STM32F4xx Standard Peripherals Library Drivers  in 43xxx_Wi-Fi project is of version V1.7.0 / 22-April-2016
I generated new sample project in IAR embedded workspace using stm32cube for STM32F412RGYx controller.
I was expecting library drivers should be same but pratically this is not the case.
I compared stm32f412rx.h from IAR project with stm32f4xx.h from WICED project.
Let me tell one example.
In WICED project one of the structures declaration  is as follows.
typedef struct
{
  __IO uint32_t MODER;    /*!< GPIO port mode register,               Address offset: 0x00      */
  __IO uint32_t OTYPER;   /*!< GPIO port output type register,        Address offset: 0x04      */
  __IO uint32_t OSPEEDR;  /*!< GPIO port output speed register,       Address offset: 0x08      */
  __IO uint32_t PUPDR;    /*!< GPIO port pull-up/pull-down register,  Address offset: 0x0C      */
  __IO uint32_t IDR;      /*!< GPIO port input data register,         Address offset: 0x10      */
  __IO uint32_t ODR;      /*!< GPIO port output data register,        Address offset: 0x14      */
  __IO uint16_t BSRRL;    /*!< GPIO port bit set/reset low register,  Address offset: 0x18      */
  __IO uint16_t BSRRH;    /*!< GPIO port bit set/reset high register, Address offset: 0x1A      */
  __IO uint32_t LCKR;     /*!< GPIO port configuration lock register, Address offset: 0x1C      */
  __IO uint32_t AFR[2];   /*!< GPIO alternate function registers,     Address offset: 0x20-0x24 */
} GPIO_TypeDef;

In IAR project the same structure declartaion is as follows.
typedef struct
{
  __IO uint32_t MODER;    /*!< GPIO port mode register,               Address offset: 0x00      */
  __IO uint32_t OTYPER;   /*!< GPIO port output type register,        Address offset: 0x04      */
  __IO uint32_t OSPEEDR;  /*!< GPIO port output speed register,       Address offset: 0x08      */
  __IO uint32_t PUPDR;    /*!< GPIO port pull-up/pull-down register,  Address offset: 0x0C      */
  __IO uint32_t IDR;      /*!< GPIO port input data register,         Address offset: 0x10      */
  __IO uint32_t ODR;      /*!< GPIO port output data register,        Address offset: 0x14      */
  __IO uint32_t BSRR;     /*!< GPIO port bit set/reset register,      Address offset: 0x18      */
  __IO uint32_t LCKR;     /*!< GPIO port configuration lock register, Address offset: 0x1C      */
  __IO uint32_t AFR[2];   /*!< GPIO alternate function registers,     Address offset: 0x20-0x24 */
} GPIO_TypeDef;

You can observe the change clearly.
And many more variables datatypes are not matching.

Which one i have to prefer (WICED drivers or IAR drivers)i would like to know?

0 Likes
1 Solution
RaktimR_11
Moderator
Moderator
Moderator
500 replies posted 250 replies posted 100 replies posted

You have to refer to the WICED drivers which is originally sourced in 2016 as you have correctly pointed out. If you try to change to the driver generated from Cube, compilation won't pass since WICED SDK uses those src files in the top level APIs.

View solution in original post

4 Replies
RaktimR_11
Moderator
Moderator
Moderator
500 replies posted 250 replies posted 100 replies posted

You have to refer to the WICED drivers which is originally sourced in 2016 as you have correctly pointed out. If you try to change to the driver generated from Cube, compilation won't pass since WICED SDK uses those src files in the top level APIs.

Thanks for your reply.

I understand that WICED drivers to be used as is with no modification.

But i am facing some problem while porting source code written in IAR embedded workbench to WICED studio.

Let me elaborate my question by taking an example.

In IAR code member variable BSRR of structure GPIO_TypeDef is used. (something like this pio_ctrl->reg_ctrl->BSRR = static_cast<uint32_t>(1<< pio_ctrl->pio_num))

In WICED studio project member variable BSRR is not present in structure GPIO_TypeDef.

This causes compilation errors.

What is the best way to handle this problem as WICED drivers are not recommended to change?

0 Likes

Currently in WICED Studio, there is no straightforward way to do this, We are working on this feature addition internally which will be made available through our next generation Modus Toolbox IDE

Raktim Roy wrote:

We are working on this feature addition internally which will be made available through our next generation Modus Toolbox IDE

When will the "next generation Modus Toolbox IDE" be available?

0 Likes