金牌会员
 
- 积分
- 1255
- 金钱
- 1255
- 注册时间
- 2017-11-18
- 在线时间
- 296 小时
|
1金钱
严格来说这个算是一个通用的疑问。
1.描述:我最近在维护别人的一份代码,其中工程中使用到了SPI外设,但是在调试过程发现SPI传输的数据不对,开始怀疑是SPI配置不对,就拿示波器去量信号。发现SPI时钟引脚没有信号输出。
2.后来我就改了外设时钟初始化代码:
原来的代码:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOE, ENABLE);
我修改后的代码:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
区别就是我把他们独立来写了,之前是“或”的方式。然后SPI就有时钟信号输出了。
3.问题:
(1)这两种初始化的写法难道不等效吗?希望这个问题解释清楚一点,谢谢!
(2)今后不管什么情况,GPIO脚的初始化是不是也有必要分开呢?
|
|