你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

[STM32F072 Nucleo ] 开发板 CubeMX与FW操作GPIO的差异  

[复制链接]
wenyangzeng 提问时间:2014-12-8 22:51 /
本帖最后由 wenyangzeng 于 2014-12-9 07:36 编辑

    昨天用STM32CubeMX 对开发板进行编译下载收到满意的结果。其中对PA5的操作是使用直接寄存器模式:GPIOA->ODR |= 0X0020; //置1
GPIOA->ODR &= ~0X0020;//置0

今天打算用F0库操作模式来进行:

GPIO_SetBits(GPIOA ,GPIO_Pin_5);
GPIO_ResetBits(GPIOA ,GPIO_Pin_5);

    不料,上面2条语句编译却报错,用STM32CubeMX生成的函数库竟然不支持F0函数库对GPIO的置位清零。有点纳闷,CubeMX同样是ST的软件包,为何自家人要各立门派,相互不兼容。其实F0和F1的函数库也有这个问题,有许多操作相同功能函数,它们的函数表达式却有少许差异,这给使用者软件移植带来诸多不变。
   阅读STM32CubeMX生成的函数库,才发现这2条函数表达式如下:
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);
在此分享,望各位少走弯路。

CubeMX生成的系统时钟配置的函数如下,各位可以看出其中的差异:
void SystemClock_Config(void)
{

  RCC_OscInitTypeDef RCC_OscInitStruct;
  RCC_ClkInitTypeDef RCC_ClkInitStruct;

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSICalibrationValue = 16;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  HAL_RCC_OscConfig(&RCC_OscInitStruct);

  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);
  __SYSCFG_CLK_ENABLE();

}



真希望ST能把STM32CubeMX升级一下,把这些差异兼容掉。





收藏 评论27 发布时间:2014-12-8 22:51

举报

27个回答
tryfly 回答时间:2015-2-15 22:07:40
你好,我遇到你一样的问题,库有的函数不同。然后其找的,如下代码,072上还是不亮灯。。
编译下载都没出错的。就是灯不亮,这是为什么呢?
int main(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        SystemInit();
        RCC_APB2PeriphClockCmd(RCC_AHBENR_GPIOAEN,ENABLE);
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode =GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType =GPIO_OType_PP;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
        while(1)
        {
                 
                GPIO_SetBits(GPIOA,GPIO_Pin_5);
                //delay(1);
          //GPIO_ResetBits(GPIOA,GPIO_Pin_5);
                //delay(10);
        }
}
tryfly 回答时间:2015-2-16 11:55:26
wenyangzeng 发表于 2015-2-16 11:45
不知道你用的是哪个函数库,下面这句时钟的配置:
RCC_APB2PeriphClockCmd(RCC_AHBENR_GPIOAEN,ENABLE); ...

恩恩,就是这个,我找了好久在一个例程里面找到了。还请问一下,delay怎么弄呢?
void delay(uint32_t nCount)
{
        for(;nCount!=0;nCount--);
}
对吗?这个也不同,定义类型是用uint32_t    uint16_t吗?根本找到不到哪里有关于这些的说明。唉。
我这个延时函数放main.c主函数上面,在主函数里面调用也出错。我也不知道为什么。
wenyangzeng 回答时间:2015-2-16 11:45:52
本帖最后由 wenyangzeng 于 2015-2-16 11:52 编辑
sos博 发表于 2015-2-15 22:07
你好,我遇到你一样的问题,库有的函数不同。然后其找的,如下代码,072上还是不亮灯。。
编译下载都没出错 ...

不知道你用的是哪个函数库,下面这句时钟的配置:
RCC_APB2PeriphClockCmd(RCC_AHBENR_GPIOAEN,ENABLE);
原本官方是这样写的:
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); 未命名.JPG
F0好像没有APB2.
巅峰残狼 回答时间:2014-12-9 09:07:43
总得有个过程,毕竟是新东西,以后应该会有更新的,客户用着爽才是王道
arm8686 回答时间:2014-12-9 11:28:49
使用 HAL (硬件抽象层),应该是 ST 公司今后的代码风格吧。
wenyangzeng 回答时间:2014-12-9 13:47:02
arm8686 发表于 2014-12-9 11:28
使用 HAL (硬件抽象层),应该是 ST 公司今后的代码风格吧。

谢谢楼上的指教
ilovestmcu 回答时间:2014-12-10 15:08:56
hal库文件少很多功能,郁闷啊.
想用cubemx,但感觉还不是时候
wamcncn 回答时间:2014-12-25 20:04:45
看CUBEMX与MFC何其相似,但却没MFC强大,说是新生事物吧,偏偏象MFC
wenyangzeng 回答时间:2014-12-26 10:34:58
wambob 发表于 2014-12-25 20:04
看CUBEMX与MFC何其相似,但却没MFC强大,说是新生事物吧,偏偏象MFC

   其实CUBEMX完全可以将库函数语法做成与STM32函数库语法相兼容的。这样可以让用户很快就能适应。当初STM321.0库过渡到2.0-3.0库就让用户经历了一次痛苦的过程了。
织梦狼 回答时间:2015-1-4 11:33:27
差异化太大反而没人意用,就像winXp和win8一样所以中间有个Win7。win8是失败的产品,win7起码有企业愿意掏钱买单。win8只有在那些山寨触摸平面见到身映。
770781327 回答时间:2015-1-5 08:43:24
所以现在cubemx只能用来玩玩
AndyYau-268557 回答时间:2015-1-5 13:35:22
还没玩过这种板,帖子很及时。看来得记下来,少走弯路。谢谢楼主
小鹏 回答时间:2015-1-7 13:49:16
使用的是两个不同的库,肯定不兼容了。楼主才发现吗?
强仔00001 回答时间:2015-1-7 15:20:23
用不惯新的库
我是酱油哥 回答时间:2015-1-7 16:03:13
弱弱的问一句FW是什么软件
abend 回答时间:2015-1-7 16:18:06
CubeMX HAL库好用啊!反正我也没有学习之前的库,没有负担。呵呵
回答时间:2015-1-10 23:29:55
感谢~~~~~~~~~~~~~~
12下一页

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版