-
结构体按位对齐后的赋值
[i=s] 本帖最后由 slf123123 于 2021-4-19 09:13 编辑 [/i] [p=24, null, left][color=rgb(34, 34, 38)][backcolor=rgb(255, 255, 255)][font="]typedef unsigned long DWORD;[/font][/backcolor][/color][/p][p=24, null, left][color=rgb(34, 34, 38)][backcolor=rgb(255, 255, 255)][font="]#pragma pack(push) #pragma pack(1) typedef struct si { DWORD a:4; DWORD b:7; DWORD c:3; DWORD d:1; [/font][/backcolor][/color][/p][p=24, null, left][color=rgb(34, 34, 38)][backcolor=rgb(255, 255, 255)][font="] DWORD e:3; DWORD f:14; }si; #pragma pack(pop) [/font][/backcolor][/color][/p] [p=24, null, left][color=rgb(34, 34, 38)][backcolor=rgb(255, 255, 255)][font="] 如上所示这个结构体对齐后是四个字节[/font][/backcolor][/color][/p][p=24, null, left][color=rgb(34, 34, 38)][backcolor=rgb(255, 255, 255)][font="]然后[/font][/backcolor][/color][/p][p=24, null, left][color=rgb(34, 34, 38)][backcolor=rgb(255, 255, 255)][font="]uint8 buff[4];[/font][/backcolor][/color][/p][p=24, null, left][color=rgb(34, 34, 38)][backcolor=rgb(255, 255, 255)][font="]怎么将buff赋值给整个结构体[/font][/backcolor][/color][/p][p=24, null, left][color=rgb(34, 34, 38)][backcolor=rgb(255, 255, 255)][font="]struct si su={buff[0],buff[1],buff[2],buff[3]};[/font][/backcolor][/color][/p][p=24, null, left][color=rgb(34, 34, 38)][backcolor=rgb(255, 255, 255)][font="]这样赋值不行吗[/font][/backcolor][/color][/p]
3619浏览量 14回复量 关注量 -
lcd1602滚动显示
[color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]#include
[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]typedef unsigned char uint8;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]typedef unsigned int uint16;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]sbit rs=P2^6;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]sbit rw=P2^5;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]sbit e=P2^7;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]uint8 a[16]="perchin designed";[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]uint8 b[27]="welcome to the world of mcu";[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]void delay(uint16 i) //1us[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]{[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] while(i--);[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]}[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]void wrc(uint8 c)[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]{[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] delay(1000);[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] rs=0;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] rw=0;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] e=0;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] P0=c;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] e=1;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] delay(10);[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] e=0;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] /*[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] P0=c<<4;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] e=1;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] e=0;*/ //四位的LCD要加上[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]}[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]void wrd(uint8 dat)[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]{[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] delay(1000);[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] rs=1;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] rw=0;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] e=0;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] P0=dat;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] e=1;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] delay(10);[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] e=0;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] /*[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] P0=dat<<4;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] e=1;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] e=0;*/ //四位的LCD要加上[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] rs=0; [/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]}[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]void init()[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]{[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] delay(1000);[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] /*wrc(0x32); [/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] wrc(0x28);[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] wrc(0x28); */ //四位的LCD要加上[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] wrc(0x38);[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] wrc(0x38);[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] wrc(0x38); [/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] wrc(0x0c); [/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] wrc(0x01); [/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]}[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]void display()[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px]{[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] uint8 i;[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] wrc(0x00+0x80);[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] for(i=0;i<16;i++)[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] {[/size][/font][/backcolor][/color] [color=#4c4c4c][backcolor=rgb(255, 255, 255)][font="][size=16px] wrd(a[/size][/font][/backcolor][/color][color=rgb(76, 76, 76)][backcolor=rgb(255, 255, 255)][font="][size=16px]); } wrc(0x40+0x80); for(i=0;i<27;i++) { wrd(b); } wrc(0x07); //每写一个数据屏幕就要右移一位,就相对于数据来说就是左移了; while(1) { wrc(0x00+0x80); for(i=0;i<16;i++) { wrd(a); delay(30000); //如果不加这条延时语句的话滚动会非常快。 } } } void main() { init(); while(1) { display(); } } 请问下面这条语句怎样实现滚动 while(1) { wrc(0x00+0x80); for(i=0;i<16;i++) { wrd(a); delay(30000); //如果不加这条延时语句的话滚动会非常快。 } } [/size][/font][/backcolor][/color] 2129浏览量 1回复量 关注量 -
有遇到 LSM6DSM 在 ST-Link 连接时不能用的人吗?
如果使用 ST-Link 连接,程序初始化时会在 LSM6DSM_ACC_GYRO_driver_HL.c 文件中 static DrvStatusTypeDef LSM6DSM_Check_WhoAmI( DrvContextTypeDef *handle ) { //... if ( who_am_i != handle->who_am_i ) 这里出错。宏定义写的是 #define LSM6DSM_ACC_GYRO_WHO_AM_I 0x6A 然而 LSM6DSM_Get_WhoAmI( handle, &who_am_i ) 读到的是 0x4A。 拔掉 ST-Link 就能正常初始化。 如果把宏定义强行改为 0x4A ,ST-Link下能够使用,但是仅用USB供电时又启动不了了。 这是什么情况
715浏览量 3回复量 关注量