DS18B20调试中
弄了一晚上没弄出来





88楼
为了能用示波器看到系统时钟,决定将系统时钟输出到MCO引脚上去。
弄了一晚上,看见波形了。
首先建立空的工程,将下面三行代码注释掉:
;IMPORT SystemInit ;删除SystemInit自己写RCC初始化函数
;LDR R0, =SystemInit
;BLX R0
下面是设置函数,使用HSI作为系统时钟,不实用PLL,直接将HSI输出到MCO引脚:
void My_RccInitMCOHSI(void)
{
uint8_t temp;
My_Rcc_DeInit();
RCC->CR |= 1<<0; //复位HSION 开启内部时钟;其实内部时钟不用管的,开机自动使用内部时钟。
while(!(RCC->CR>>1)); //检查HSI是否就绪
RCC->CFGR &= (~0x03); //清零CFGR的0、1位 HSI作为系统时钟
while(temp!=0x00) //读取CFGR的2、3为,判断是否是HSI作为系统时钟设置
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
//此时HSI已经成为系统时钟
//HSI时钟就绪后,直接输出到MCO(PA8)
RCC->APB2ENR |= 1<<2; //使能PA时钟
RCC->APB2ENR|=1<<5; //使能PORTD时钟
GPIOA->CRH&=0XFFFFFFF0;
GPIOA->CRH|=0X0000000B;//PA8 推挽输出(MCO)
// //设置MCO输出内部HSI时钟
RCC->CFGR |= 5<<24; //MCO输出HSI时钟
//RCC->CFGR |= 4<<24; MCO输出系统时钟SYSCLK
//此时就可以在PA8即MCO引脚看见输出波形了 对比下,两者是一样的。
}
下边是示波器出来的图:

示波器探针位置,插到PA8上去。已经印出来了,没焊,探针刚好插进去
弄了一晚上,看见波形了。
首先建立空的工程,将下面三行代码注释掉:
;IMPORT SystemInit ;删除SystemInit自己写RCC初始化函数
;LDR R0, =SystemInit
;BLX R0
下面是设置函数,使用HSI作为系统时钟,不实用PLL,直接将HSI输出到MCO引脚:
void My_RccInitMCOHSI(void)
{
uint8_t temp;
My_Rcc_DeInit();
RCC->CR |= 1<<0; //复位HSION 开启内部时钟;其实内部时钟不用管的,开机自动使用内部时钟。
while(!(RCC->CR>>1)); //检查HSI是否就绪
RCC->CFGR &= (~0x03); //清零CFGR的0、1位 HSI作为系统时钟
while(temp!=0x00) //读取CFGR的2、3为,判断是否是HSI作为系统时钟设置
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
//此时HSI已经成为系统时钟
//HSI时钟就绪后,直接输出到MCO(PA8)
RCC->APB2ENR |= 1<<2; //使能PA时钟
RCC->APB2ENR|=1<<5; //使能PORTD时钟
GPIOA->CRH&=0XFFFFFFF0;
GPIOA->CRH|=0X0000000B;//PA8 推挽输出(MCO)
// //设置MCO输出内部HSI时钟
RCC->CFGR |= 5<<24; //MCO输出HSI时钟
//RCC->CFGR |= 4<<24; MCO输出系统时钟SYSCLK
//此时就可以在PA8即MCO引脚看见输出波形了 对比下,两者是一样的。
}
下边是示波器出来的图:

示波器探针位置,插到PA8上去。已经印出来了,没焊,探针刚好插进去


89楼
HSE直接作为SYSCLK。与HSI相似
设置方法如下,代码中有注释:
void My_RccInitMCOHSE(void)
{
uint8_t temp;
My_Rcc_DeInit();
RCC->CR |= 1<<16; //开启HSEON 开启外部时钟。
while(!(RCC->CR>>17)); //等待HSE就绪
//选择HSE作为系统时钟
RCC->CFGR |= 0x01;
while(temp!=0x01) //读取CFGR的2、3为,判断是否是HSE作为系统时钟设置
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
//此时HSE已经成为系统时钟
//HSE时钟就绪后,直接输出到MCO(PA8)
RCC->APB2ENR |= 1<<2; //使能PA时钟
GPIOA->CRH&=0XFFFFFFF0;
GPIOA->CRH|=0X0000000B;//PA8 推挽输出(MCO)
//设置MCO输出内部HSE时钟
RCC->CFGR |= 0x06<<24; //MCO输出HSE时钟
//RCC->CFGR |= 4<<24; MCO输出系统时钟SYSCLK
//此时就可以在PA8即MCO引脚看见输出波形了 对比下,两者是一样的。
}
按照惯例,最后是图片。我使用的是12M的晶振。

90楼
PLL部分只放代码和图,刚才写了半天,提示2分钟只能提交5次信息,然后就没了。
郁闷的不想再写了
void My_RccInitMCOPLL(uint8_t PLL)
{
uint8_t temp;
My_Rcc_DeInit();
RCC->CR |= 1<<16; //开启HSEON 开启外部时钟。
while(!(RCC->CR>>17)); //等待HSE就绪
//选择HSE作为系统时钟
//RCC->CFGR |= 0x01;
//设置PLL倍频数
PLL -= 2; //根据PLL倍频系数与RCC->CFGR的18到21位得出(PLLMUL)
RCC->CFGR |= PLL<<18;
RCC->CFGR |= 1<<16; //HSE作为PLL时钟源
RCC->CR |= 1<<24;
while(!(RCC->CR>>25));//等待PLL锁定
//选择PLL输出作为系统时钟源
RCC->CFGR |= 0x02;
while(temp!=0x02) //读取CFGR的2、3为,判断是否是HSE作为系统时钟设置
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
//此时HSE已经成为系统时钟
//HSE时钟就绪后,直接输出到MCO(PA8)
RCC->APB2ENR |= 1<<2; //使能PA时钟
GPIOA->CRH&=0XFFFFFFF0;
GPIOA->CRH|=0X0000000B;//PA8 推挽输出(MCO)
//设置MCO输出内部HSE时钟
RCC->CFGR |= 0x07<<24; //MCO输出HSE时钟
//RCC->CFGR |= 4<<24; // MCO输出系统时钟SYSCLK
//此时就可以在PA8即MCO引脚看见输出波形了 对比下,两者是一样的。
}




郁闷的不想再写了
void My_RccInitMCOPLL(uint8_t PLL)
{
uint8_t temp;
My_Rcc_DeInit();
RCC->CR |= 1<<16; //开启HSEON 开启外部时钟。
while(!(RCC->CR>>17)); //等待HSE就绪
//选择HSE作为系统时钟
//RCC->CFGR |= 0x01;
//设置PLL倍频数
PLL -= 2; //根据PLL倍频系数与RCC->CFGR的18到21位得出(PLLMUL)
RCC->CFGR |= PLL<<18;
RCC->CFGR |= 1<<16; //HSE作为PLL时钟源
RCC->CR |= 1<<24;
while(!(RCC->CR>>25));//等待PLL锁定
//选择PLL输出作为系统时钟源
RCC->CFGR |= 0x02;
while(temp!=0x02) //读取CFGR的2、3为,判断是否是HSE作为系统时钟设置
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
//此时HSE已经成为系统时钟
//HSE时钟就绪后,直接输出到MCO(PA8)
RCC->APB2ENR |= 1<<2; //使能PA时钟
GPIOA->CRH&=0XFFFFFFF0;
GPIOA->CRH|=0X0000000B;//PA8 推挽输出(MCO)
//设置MCO输出内部HSE时钟
RCC->CFGR |= 0x07<<24; //MCO输出HSE时钟
//RCC->CFGR |= 4<<24; // MCO输出系统时钟SYSCLK
//此时就可以在PA8即MCO引脚看见输出波形了 对比下,两者是一样的。
}




回复
有奖活动 | |
---|---|
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K314】芯片启动流程分析被打赏40分 |