- 把main写成mian,编译出错
- .h文件复制完后忘记更改头文件- #ifndef后面的内容,导致头文件一直找不到
- vscode错误更正完毕后还是找不到库函数参数,把库函数删掉,然后重新写一遍就正常了
- 写led切换函数,led灯点不亮,是切换函数选择的问题,错误明显但是没发现
-    
- 弄清楚(GPIO1->DR)&(1<<18)和((GPIO1->DR) >> 18) & 0x1的区别:
- 以下是对这两个表达式的详细解释:
-  (GPIO1->DR)&(1<<18):- 这部分表示对 GPIO1的数据寄存器(DR)与1左移 18 位的值进行按位与操作。
- 它的目的是检查 GPIO1->DR的第 18 位是否为 1。
 
- 这部分表示对 
-  ((GPIO1->DR) >> 18) & 0x1:- 这部分先将 GPIO1->DR右移 18 位,然后与0x1(即二进制的 1)进行按位与操作。
- 它的作用也是提取 GPIO1->DR的第 18 位的值,但通过右移操作来实现。
 
- 这部分先将 
总的来说,这两个表达式都是用于获取 GPIO1->DR 的第 18 位的值,但是其比较的结果不一样,第二种比较的结果只有1或者0,但是第一种比较的结果有0和一个不确定的正值
-  flag=~flag;的结果是将flag的每一位取反,即 0 变成 1,1 变成 0。
-  flag=!flag;的结果是将flag的逻辑值取反,即原来是 0 则变成 1,原来是 1 则变成 0。
-  但需要注意的是,这两种操作的结果都是对 flag的值进行修改,具体的结果取决于flag原来的值。
-  linux开发环境下bss清除段注释掉才能正常运行,没有进行四字节对齐,_bss_start的反汇编起始地址最后一位一定是能被4整除,例如可以是0x0,0x4,0x0,0x8,0x****c,唯独不可能是0x878000289 
-  CCM_ANALOG->PFD_480=reg与上面的步匹配。写成:CCM_ANALOG->PFD_528=reg:错误的形式是:初始化PLL3的各路PFD0-PFD3的时钟时出现大问题,而且后序其他支路用到这条时钟线分支的也不起作用,卡死,SOC卡死,运行不正常;错误代码如下:\
-  reg=CCM_ANALOG->PFD_480; reg &=~(0x3f3f3f3f); reg |=(19<<24); /*初始化PLL3_PFD3=454.7MHz,利用公式的得到:*/ reg |=(17<<16); /*初始化PLL3_PFD2=508.2MHz,利用公式的得到:*/ reg |=(16<<8); /*初始化PLL3_PFD1=540MHz,利用公式的得到:*/ reg |=(12<<0); /*初始化PLL3_PFD0=720MHz,利用公式的得到:*/ CCM_ANALOG->PFD_528=reg; /*设置完毕*/设置错误:CCM_ANALOG->PFD_480=reg;
-  reg= CCM->CBCDR; reg &= ~(7<<10); //先清零,这里不能直接先 CCM->CBCDR &= ~(7<<10)清零,因为清零直接变成1分频, //超 过了132Mhz,直接死机 reg |= (2<<10); //在赋值3分频 CCM->CBCDR=reg; while((CCM->CDHIPR >> 1) & (0x1));/*等待握手信号*/
-  中断初始化错误  
-  配置LCD错误-白屏但是不能正确显示内容,而且反复变色:错误原因是没有正确选择时钟的来源,也就是时钟选择器配置错误,错误如下: 
-  /*这里的目的是把bit17-15变为011, 但是我只把最高位清零,把中间的置1,没有管bit15 但是bit15如果原来是1的话,就不能选择正确的时钟*/ CCM->CSCDR2 &= ~(1<<17); CCM->CSCDR2 |= (2<<15); /*四路时钟选择器*/
-  错误重复定义,如果在一个源文件中引用头文件引用了两次,如果出现外部引用和结构体变量,就会出现重复定义,这种错误很隐蔽:错误如下:如果更正后错误依然存在,则可以重启电脑进行试试; 
  
-  warning: left shift count >= width of type seconds = ((uint64_t)(SNVS->LPSRTCMR<<32))|(SNVS->LPSRTCLR);出现这种错误指左移超过了这个数的本身长度,这个数是32位的,但是左移32位显然不正确,解决的办法是加上强制类型转换,转换成64位的数;
-   
-  注意在单片机中计数器计数一次是外部晶体每次的时钟+1,而不是对应的一秒+1,这个在配置RTC时钟时进行秒数转换有大坑,比如读取秒数时要把秒数除以32K也就是左移17位;
-  在写IIC通信时,标志位的清除使用错误的寄存器I2CR,而表示标志位的寄存器是:I2SR,也就是清除错误: 
-   
-  错误: 文件能跳转,显示报错未定义,是因为makfile文件中只包含了 源文件的目录,没有包含头文件的目录,错误如下: 
-   



















