嵌入式开发中遇到的一些小问题汇总(持续更新..........)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gkxg001/article/details/82834933

1、对于嵌入式中直接操作寄存器的操作时,一定要注意的是,在操作寄存器后会直接反映到芯片上,而不是按业务流程流到一定节点后统一处理。例如以下例子:

例如:如下两段代码为实现同样的功能,示例二经测试发现在程序运行中,会发生瞬间采样case 0对应。

示例一:

void sub_sel(uint8_t no)

{

uint32_t temp;

temp=0x1fff;

switch(no)

{

case 0:

temp=0x1fff;

break;

case 1:

temp|=0x8000;//PC[13..15]=1000 xxxx xxxx xxxxb

break;

case 2:

temp|=0x4000;//PC[13..15]=0100 xxxx xxxx xxxxb

break;

default:

break;

}

GPIOC->ODR|=0xe000;

GPIOC->ODR&=temp;

}

示例二:

void sub_sel(uint8_t no)

{

GPIOC->ODR &=0x1fff;

switch(no)

{

case 0:

//GPIOC->ODR &=0x1fff;//PC[13..15]=0000 xxxx xxxx xxxxb

break;

case 1:

GPIOC->ODR |=0x8000;//PC[13..15]=1000 xxxx xxxx xxxxb

break;

case 2:

GPIOC->ODR |=0x4000;//PC[13..15]=0100 xxxx xxxx xxxxb

break;

default:

break;

}

}

2、STM32当外部时钟HSE失效后,系统会自动通过CSS时钟监控系统切换为内部时钟。当你在测试晶振的时候尤其要注意这点。

未完待续。。。。。。

猜你喜欢

转载自blog.csdn.net/gkxg001/article/details/82834933