精华内容
下载资源
问答
  • 关于stm32结构体

    2021-10-04 18:25:55
    刚刚看到stm32结构体,这个部分还是很重要的,做一个小结总结一下 正常标注结构体形式 struct _GPIO ...结构体指针可以指向结构体变量 _GPIO*GPIOC 我们可以用箭头指向一个变量 GPIOC->_GPIOA 但是

    刚刚看到stm32结构体,这个部分还是很重要的,做一个小结总结一下

    正常标注结构体形式

    struct _GPIO

    {

    成员列表

    }

    这样就定义了一个结构体,但是当需要定义变量时就需要

    struct _GPIO GPIOA;

    然而我们可以使用另一种形式

    typedef struct

    {

    成员列表

    }_GPIO

    这样定义新的变量就可以_GPIO_GPIOA

    结构体指针可以指向结构体变量

    _GPIO*GPIOC

    我们可以用箭头指向一个变量

    GPIOC->_GPIOA

    但是如果想要使用赋值的方式指向一个变量时,直接用

    GPIOC = _GPIOA

    是错误的

    因为指针只能指向一个地址,我们可以这样使用

    GPIOC=&_GPIOA

    展开全文
  • 此预处理将 GPIOA 变成 GPIO_typedef 类型的结构体指针,默认指向了GPIOA的基地址首。在调用->指向不同结构体成员时,指针就会根据成员变量类型的大小跳不同的步进,进而访问到不同的成员地址,对不同成员地址...

    对于STM32固件库中的地址强行地址转换

    #define GPIOA ((GPIO_typedef *) GPIOA_BASE
    

    此预处理将 GPIOA 变成 GPIO_typedef 类型的结构体指针,默认指向了GPIOA的基地址首。在调用->指向不同结构体成员时,指针就会根据成员变量类型的大小跳不同的步进,进而访问到不同的成员地址,对不同成员地址(其实就是GPIO的各功能寄存器)赋值处理就完成操作GPIO。

    展开全文
  • STM32笔记3:结构体指针访问寄存器

    千次阅读 2018-07-18 20:36:22
    stm32f4xx.h" //peripheral #define PERIPHERAL ((unsigned int)(0x40000000)) #define AHB1_BASE ((unsigned int)(PERIPHERAL + 0x0002 0000)) #define GPIOA_BASE ((unsigned int)(AHB...
    //peripheral:外设
    #include"stm32f4xx.h"
    
    //peripheral
    #define PERIPHERAL	((unsigned int)(0x40000000))
    #define AHB1_BASE	((unsigned int)(PERIPHERAL + 0x0002 0000))
    #define GPIOA_BASE	((unsigned int)(AHB1_BASE+0x0000 0000))
    #define GPIOB_BASE	((unsigned int)(AHB1_BASE+0x0002 0400))
    #define GPIOC_BASE	((unsigned int)(AHB1_BASE+0x0002 0800))
    #define GPIOD_BASE	((unsigned int)(AHB1_BASE+0x0002 0c00))
    #define GPIOE_BASE	((unsigned int)(AHB1_BASE+0x0002 1000))
    #define GPIOF_BASE	((unsigned int)(AHB1_BASE+0x0002 1400)
    #define GPIOG_BASE	((unsigned int)(AHB1_BASE+0x0002 1800))
    #define GPIOH_BASE	((unsigned int)(AHB1_BASE+0x0002 1C00))
    #define GPIOI_BASE	((unsigned int)(AHB1_BASE+0x0002 2000))
    
    
    															// #define GPIOH_MODER 	*(unsigned int*)(GPIOH_BASE+0x00)
    															// #define GPIOH_OTYPER 	*(unsigned int*)(GPIOH_BASE+0x04)
    															// #define GPIOH_OSPEEDR	*(unsigned int*)(GPIOH_BASE+0x08)
    															// #define GPIOH_PUPDR 	*(unsigned int*)(GPIOH_BASE+0x0c)
    															// #define GPIOH_IDR		*(unsigned int*)(GPIOH_BASE+0x10)
    															// #define GPIOH_ODR 		*(unsigned int*)(GPIOH_BASE+0x14)
    															// #define GPIOH_BSRR 		*(unsigned int*)(GPIOH_BASE+0x18)
    															// #define GPIOH_LCKR 		*(unsigned int*)(GPIOH_BASE+0x1c)
    															// #define GPIOH_AFRL		*(unsigned int*)(GPIOH_BASE+0x20)
    															// #define GPIOH_AFRH 		*(unsigned int*)(GPIOH_BASE+0x24)
    
    typedef unsigned int	uint32_t;
    typedef unsigned int 	uint16_t;
    
    typedef struct
    {
    	uint32_t MODER;
    	uint32_t OTYPER;
    	uint32_t OSPEEDR;
    	uint32_t PUPDR;
    	uint32_t IDR;
    	uint32_t ODR;
    	uint16_t BSRRL;
    	uint16_t BSSRH;
    	uint32_t LCKR;
    	uint32_t AFR[2];	
    }GPIO_Typedef;
    
    //将GPIOA_BASE变成一个结构体指针
    #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))
    #define GPIOH ((GPIO_Typedef *)(GPIOH_BASE))
    #define GPIOI ((GPIO_Typedef *)(GPIOI_BASE))
    
     int main(void)
    {
    	RCCAHB1PERIPH_BASE |= (1<<7);
    	 
    															// GPIOH_MODER &= ~(3<<2*10); 
    															// GPIOH_MODER |= (1<<2*10); 
     
    	GPIOH->MODER &= ~(3<<2*10);
    	GPIO->MODER |= (1<<2*10);
    	//PH10输出低电平
    	GPIOH_ODR &= ~(1<<10); 
    	while(1);
    }

     

    展开全文
  • 本文介绍了利用结构体指针方式对多数据类型的参数进行赋值

    今天分析的程序是一个对参赋值的程序,有人会说对参数赋值的操作很简单,但是涉及到数十个参数,每个参数同时还包括不同的信息,上述直接赋值的方法就会看起来很乱,不便于管理。

    今天的项目是这样的,我需要定义数十个参数,比如数据的起始地址、本机网络地址、UDP地址信息、摄像头IP信息,以及一系列的控制参数等等,那么这些参数不仅仅是单独的一个数据,每个参数同时还包括保存标志位,数据,数据长度,以及数据地址。下面我们用一个简图来表示这样的一组数据:

    那么基于上述的目的我们建立两个文件:

    Params.h程序和Params.c程序,在.h文件里我们定义两组结构体。一个是参数结构体,一个属对应的数据类型结构体。同时在.c文件中定义其结构体指针。

    其次在.c文件中对上述参数进行赋值就可以了。

    展开全文
  • 采用TCP/IP上报采集数据,用结构体的形式建立数据缓冲区。...比如我定义的结构体为://帧格式结构体typedef struct{uint32_t frame_head; //帧标志uint16_t frame_len;//帧长stcSystemTime frame_time;//帧时间st...
  • 【IoT】STM32 结构体位域操作 (int a:4)

    千次阅读 2019-03-25 19:24:48
    说明了bs类型的变量bit和指向bs类型的指针变量pbit,这表示位域也是可以使用指针的。  我们再来看看下面两个结构体定义: struct foo2 { char a : 2; char b : 3; char c : 1; }; struct foo3 { char a : ...
  • 结构体指针指向该结构体的首地址,也就是第一个元素的地址,那么,就把这个地址和结构体的首地址联系起来,结构体的其他元素从首地址往后依次排开, #define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) 如同上面这...
  • 最近在STM的GPIO结构体定义中看到源代码的时候,顺便复习下结构体指针变量的定义及typedef 的使用。 1.结构体类型定义 定义方式1: Typedef struct LNode { int data; // 数据域 struct LNode *next; // 指针域 } *...
  • Typedef + 结构体 定义的OS_TCB ,意思是重新命名。OS_TCB是一个结构体类型,等同于int类型,他可以再定义一个...32的一般用法,先用tpyedef给结构体重命个名字,叫做结构体类型,然后再顶一个一个结构体变量。 ...
  • //构建库函数雏形 ...stm32f4xx.h" //peripheral #define PERIPHERAL ((unsigned int)(0x40000000)) #define AHB1_BASE ((unsigned int)(PERIPHERAL + 0x0002 0000)) #define GPIOA_BASE ((unsigne...
  • 结构体里面有函数指针时,直接调用是可以的,但是在当结构体作为参数传入函数时,调用就会出现硬件中断。 相同的方法在其它编译器中是正常运行的,比如QT自动的编译器 typedef struct{ uint8_t soCharging;//充电...
  • STM32单片机中定义结构体类型指针

    千次阅读 2020-06-08 16:04:08
    定义结构体变量指针 固件库编程雏形 以STM32中点亮LED灯为例 //外设总线基地址 #define PERIPH_BASE ((unsigned int)0x40000000) #define APB1_PERIPH_BASE (PERIPH_BASE) #define APB2_PERIPH_BASE (PERIPH_BASE + ...
  • 1.用串口下载程序。虽然硬件连接的是USB,但通过CH340芯片可以实现USB转串口信号。...__IO uint32_t CRL; __IO uint32_t CRH; __IO uint32_t IDR; __IO uint32_t ODR; __IO uint32_t BSRR; __IO uin...
  • 在学习stm32嵌入式开发过程中,关于对GPIOA等地址的强制性结构体指针类型转换的参考依据!
  • 利用函数指针结构体构建的STM32F1单片机的工程模板,将烦杂的引脚配置,串口配置,ADC配置简化为结构体函数调用,使得单片机开发配置工作简单快捷,欢迎大家交流互动。
  • const修饰结构体指针

    2021-02-08 17:13:43
    const修饰结构体指针 #include<iostream> using namespace std; #include<string> //定义一个结构体 struct student { string name; int age; int score; }; void printfStudent( const struct ...
  • 12.关于结构体指针

    2018-01-03 09:06:31
    这次是想讨论一个关于结构体指针的问题,具体就是野指针 1.首先是关于结构体的问题,结构体可以简单看为一个自定义的变量,比如 typedef struct { unsigned int reg; }aa;aa就是一个结构体变量,你可以用它定义你想...
  • 最近在STM的GPIO结构体定义中看到源代码的时候,顺便复习下结构体指针变量的定义及typedef 的使用。 1.结构体类型定义 定义方式1: Typedef struct LNode { int data; // 数据域 struct LNode *next; // 指针...
  • 使用使stm32f407vet6,mdk平台,盗版的stlink V2 实验的目的是点亮一个led 创建结构体,然后取地址作为参数传入GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct),这是视频教程的方法,程序...
  • //取结构体名kinson的地址268669278 //结构体指针运算根据指针的类型来判断 79 printf("%d\n",(&kinson+1));//2686692+28=268672080 //结构体的地址就是第一个成员的地址 81 printf("%d\n",&kinson.age);//268669282...
  • 1、使用结构体设定结构体指针GPIO和RCC 2、将GPIO基地址强制转换为结构体类型的首地址,从而进行指针操作。 3、在主函数里直接使用结构体指针操作GPIO相应端口。 4、本次的LED灯集成了红灯、绿灯、蓝灯。 5、...
  • STM32:结构体总结

    千次阅读 2020-05-07 08:06:52
    1 什么是结构体 我们知道数据的基本类型有:int (整形 ), char(字符形) , unsigned int (无符号整形),unsigned char (无符号字符形) 等,还包括数组等,但有些情况下 这些都 无法满足现实的需求,于是程序员把所需变量...
  • C语言结构体指针(指向结构体的指针)详解 当一个指针变量指向结构体时,我们就称它为结构体指针。C语言结构体指针的定义形式一般为: struct 结构体名 *变量名; 下面是一个定义结构体指针的实例:(写法1:分开...
  • 消息队列传递传递结构体指针和结构体异同 使用队列传递复合数据类型 接收方接收由多个发送源发送至队列中的消息时,需要判断数据的来源,使用方式:利用队列传递结构体,在结构体中包含数据值和数据来源信息。 ...
  • 明白指针变量也是一个变量,所以当你定义一个指针的时候他会开辟一块四个字节的内存空间,来存放这个指针变量,任何类型的指针他开辟的内存大小都是四个字节的,不管是你自己定义的结构体指针还是int* p都是四个字节...
  • 数组和结构体指针相互转换

    千次阅读 2019-04-12 13:33:34
    #include ...串口接受数据时也是同样的道理,数组强转结构体指针,这样不需要一个个解析,方便快速。 结构体发送时还要注意一字节对齐的问题。大家这个可以去别的博客看看。 参考下面链接。 ...
  • 在C语言下,我们申请了一个指针*P;系统会分配一个地址给这个指针,其地址为&amp;P。该地址下存放的是这个指针指向的地址P。这个地址下存放的是这个指针实际的值*P。至于指针的++这里有两种,分别为(P++、&...
  • 还是该理解成结构体指针(地址)? MASS_init,//小弟愚钝,恳请大神指教~~~ MASS_Reset,//这里的地址与上面的函数指针一一对应??? MASS_Status_In, MASS_Status_Out, MASS_Data_Setup, MASS_NoData_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,729
精华内容 1,891
关键字:

stm32结构体指针