新手上路
- 积分
- 48
- 金钱
- 48
- 注册时间
- 2016-3-10
- 在线时间
- 11 小时
|
2金钱
原子哥在战舰V3的CAN程序源码的can.c里面有这样的一句话,
//Fpclk1的时钟在初始化的时候设置为36M,如果设置CAN_Mode_Init(CAN_SJW_1tq,CAN_BS2_8tq,CAN_BS1_9tq,4,CAN_Mode_LoopBack);
//则波特率为:36M/((8+9+1)*4)=500Kbps
//返回值:0,初始化OK;
但是这个Fpclk1是在什么时候设置为36M的呢?翻阅了同项目下的System_stm32f10x.c,
里面的Clock Definitions将时钟从24M到72M都定义了一遍,难道因为最高职能设置为36M吗,新手求答疑解惑,先行感谢
|
最佳答案
查看完整内容[请看2#楼]
在系统时钟初始化的时候,HCLK=72M, APB1=HCLK/2=36M[mw_shl_code=cpp,true]//系统时钟初始化函数
//pll:选择的倍频数,从2开始,最大值为16
//CHECK OK
//091209
void Stm32_Clock_Init(u8 PLL)
{
unsigned char temp=0;
MYRCC_DeInit(); //复位并配置向量表
RCC->CR|=0x00010000; //外部高速时钟使能HSEON
while(!(RCC->CR>>17));//等待外部时钟就绪
RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=D ...
|