当前位置: 首页 > news >正文

app store免费下载小红书seo排名帝搜软件

app store免费下载,小红书seo排名帝搜软件,商城网站开发合同,宿迁做网站哪家公司好stm32f10x.h 是stm32 的外设的地址映射,把抽象的内存通过一个个宏,映射 到了见名知义的程度。 通过 typedef 兼容了st公司的3.0版的库 中的一些数据类型。 typedef int32_t s32; typedef int16_t s16; typedef int8_t s8;typedef const int32_t sc32…

stm32f10x.h 是stm32 的外设的地址映射,把抽象的内存通过一个个宏,映射 到了见名知义的程度。

通过 typedef 兼容了st公司的3.0版的库 中的一些数据类型。

typedef int32_t  s32;
typedef int16_t s16;
typedef int8_t  s8;typedef const int32_t sc32;  /*!< Read Only */
typedef const int16_t sc16;  /*!< Read Only */
typedef const int8_t sc8;   /*!< Read Only */typedef __IO int32_t  vs32;
typedef __IO int16_t  vs16;
typedef __IO int8_t   vs8;typedef __I int32_t vsc32;  /*!< Read Only */
typedef __I int16_t vsc16;  /*!< Read Only */
typedef __I int8_t vsc8;   /*!< Read Only */typedef uint32_t  u32;
typedef uint16_t u16;
typedef uint8_t  u8;

定义了一个结构体 , GPIOX 的各个寄存器(每个是32位,准确的说BRR 是一个16位的寄存器(这里定义32我目前不是很清楚,))

typedef struct
{__IO uint32_t CRL;__IO uint32_t CRH;__IO uint32_t IDR;__IO uint32_t ODR;__IO uint32_t BSRR;__IO uint32_t BRR;__IO uint32_t LCKR;
} GPIO_TypeDef;

定义宏 来吧 STM32 复杂的内存,简单化清晰化,以及在以后的程序中用到的时候方便化。

采用的是 定义一个 基址 地址,每个外设的地址 等于 基址地址 +偏移地址,从而计算出外设的地址。

#define PERIPH_BASE           ((uint32_t)0x40000000)
#define APB1PERIPH_BASE       PERIPH_BASE
#define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)
#define AHBPERIPH_BASE        (PERIPH_BASE + 0x20000)
#define GPIOA_BASE            (APB2PERIPH_BASE + 0x0800)
#define GPIOB_BASE            (APB2PERIPH_BASE + 0x0C00)
#define GPIOC_BASE            (APB2PERIPH_BASE + 0x1000)
#define GPIOD_BASE            (APB2PERIPH_BASE + 0x1400)
#define GPIOE_BASE            (APB2PERIPH_BASE + 0x1800)
#define GPIOF_BASE            (APB2PERIPH_BASE + 0x1C00)
#define GPIOG_BASE            (APB2PERIPH_BASE + 0x2000)

宏定义 GPIOA= ((GPIO_TypeDef *)GPIOA_BASE);
把 GPIOA_BASE 强制转换成 指向 GPIO_TypeDef 型的指针。 GPIO_TypeDef 是一个结构体,上面的代码已经贴出了。

#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
#define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)
#define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)
#define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)
#define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)
#define GPIOG               ((GPIO_TypeDef *) GPIOG_BASE)

现在把 目光转向 外设的驱动文件,承接上面贴出的代码,我选择 GPIO 外设的驱动文件 stm32f10x_gpio.c
选择 void GPIO_Init() 函数(我省略了函数的形参,以后会详细分析下这个函数的具体实现,感受下ST公司工程师给我们创造美丽的艺术品) 节选一部分代码 贴出来。 主要看下加粗的部分,

 if (((uint32_t)GPIO_InitStruct->GPIO_Pin & ((uint32_t)0x00FF)) != 0x00){**tmpreg = GPIOx->CRL;**for (pinpos = 0x00; pinpos < 0x08; pinpos++){pos = ((uint32_t)0x01) << pinpos;/* Get the port pins position */currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;if (currentpin == pos){pos = pinpos << 2;/* Clear the corresponding low control register bits */pinmask = ((uint32_t)0x0F) << pos;tmpreg &= ~pinmask;/* Write the mode configuration in the corresponding bits */tmpreg |= (currentmode << pos);/* Reset the corresponding ODR bit */if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD){**GPIOx->BRR** = (((uint32_t)0x01) << pinpos);}

GPIOA-> CRL (这里我把A给了X)
翻译下这个句子就是 : GPIOA->CRL= ( ((GPIO_TypeDef *) ( (((uint32_t)0x40000000) + 0x10000) + 0x0800)))->(CRL) 就是操作这个寄存器, 其实很想我们51中的

sfr P0   = 0x80;
sfr P1   = 0x90;
sfr P2   = 0xA0;
sfr P3   = 0xB0;

只是由于STM32是32的单片机,寄存器过于庞大,不能像51那么简便的访问了而已,其实质都是一样的。

http://www.lbrq.cn/news/2526409.html

相关文章:

  • wordpress页面内搜索引擎优化要考虑哪些方面
  • 做前端网站要注意哪些上海网络推广渠道
  • 教育培训网站建设方案西地那非片能延时多久有副作用吗
  • 阿里巴巴建站多少钱青岛 google seo
  • wordpress的ftp設置搜索引擎优化的概念
  • 金华企业网站建设公司互联网金融营销案例
  • 网站伪静态规则网盟推广
  • 模板 网站在线crm
  • 做外贸网站那家专业山西优化公司
  • 最简单做网站申京效率值联盟第一
  • 做网站需要会什么条件百度网址查询
  • .ai域名注册网站宁波seo网络推广选哪家
  • 如何做局域网网站seo顾问咨询
  • 工程建设企业网站国内最好用免费建站系统
  • 广州网站开发公司排名我想做app推广怎么做
  • 重庆游戏网站开发软文自助发稿平台
  • 企业网站模板建设站长统计代码
  • 越众做的绿色建筑的网站网络营销推广合作
  • 注册网站在哪里创建长春关键词优化报价
  • 彩票网站建设网站建设的推广渠道
  • 泰安市网站建设公司广告发布平台
  • 湖南网站建设网站制作搜索引擎的网站
  • 招聘网站评估怎么做百度怎么投放自己的广告
  • 专业网站建设套餐快速排名服务平台
  • 深圳软件外包公司列表连云港网站seo
  • 网站内怎样做关键词有效果微信群免费推广平台
  • 国外的自建站平台是什么肇庆seo优化
  • 开创云网站建设支持竞价托管怎么做
  • 平湖网站建设seo综合查询怎么进入网站
  • 范例网站怎么做人力资源培训
  • 2025年6月数据挖掘顶刊TKDE研究热点有哪些?
  • vue中使用wavesurfer.js绘制波形图和频谱图
  • 如何在 Ubuntu 24.04 或 22.04 Linux 上安装和运行 Redis 服务器
  • OpenResty 高并发揭秘:架构优势与 Linux 优化实践
  • 论文阅读-IGEV
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的人格品牌化实现路径研究