野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11727|回复: 1

STM32F0位带区操作问题

[复制链接]
发表于 2019-9-23 01:01:32 | 显示全部楼层 |阅读模式
本帖最后由 dahuaX 于 2019-9-23 01:03 编辑

   用F1-霸道视频学STM32F030R8,发现有很多不一样的地方,到了位带操作这里卡住了,没找到 位带这块资料,是不是M0不支持位带操作?翻出火哥的F429挑战者,可实现位带操作。
  在网上找了几个资料看了一下,从新修改了代码如下:


   #ifndef   __LED_H__
  #define   __LED_H__
  #include "stm32f0xx.h"
  #define   LED_Pin   GPIO_Pin_7

  #define   LED_Port   GPIOC
  #define   LED_CLK    RCC_AHBPeriph_GPIOC  
#define   On       1
#define   Off      0

typedef struct _16_Bits_Struct
{
     uint16_t bit0  : 1;
     uint16_t bit1  : 1;
     uint16_t bit2  : 1;
     uint16_t bit3  : 1;
     uint16_t bit4  : 1;
     uint16_t bit5  : 1;
     uint16_t bit6  : 1;
     uint16_t bit7  : 1;
     uint16_t bit8  : 1;
     uint16_t bit9  : 1;
     uint16_t bit10 : 1;
     uint16_t bit11 : 1;
     uint16_t bit12 : 1;
     uint16_t bit13 : 1;
     uint16_t bit14 : 1;
     uint16_t bit15 : 1;
} Bits_16_TypeDef;
#define  LED0           (((Bits_16_TypeDef *)(&(LED_Port->ODR)))->bit7)//输出
#endif初始化以后  LED0=On;和LED0=Off;  是可以亮灭的。

这个代码原作者说F0/F1/F4都可以使用,我分析代码还是在操作ODR寄存器,跟位带没关系。
请问火哥:1.上边代码和直接操ODR寄存器作有什么不同?
                2.位带操作比较麻烦(比寄存器),为什么ST官方还要在F1/F4(我知道的)加上位带区,位带操作的好处是什么?

我在网上看到这么一段话:虽然很多产品提供了访问每个管脚的寄存器,但只有位带确保访问某个管脚的时候一定不会影响其他管脚,即使寄存器的值有问题。




回复

使用道具 举报

 楼主| 发表于 2019-9-23 22:44:36 | 显示全部楼层
顶一下。今天查了一些资料。F0的确没有位带区。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 02:29 , Processed in 0.028525 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表