昨天我在调试STM32F103RBT6和STM32F103VET6的时候,发现一个很奇怪的现象,具体如下:
主循环代码都是:
while(1)
{
GPIOB->ODR|=1<<1;
GPIOB->ODR&=0<<1;
}
就是不停地输出矩形波。其他的代码,除了二者一个用HD一个用MD,内核的启动文件也不一样,其他代码都一样。
二者测试到的波形很大不同:STM32F103RBT6测到的脉宽居然为1μS左右,而STM32F103VET6测到的是120ns左右。前者居然是后者的8倍!求大神帮个忙告诉我这是啥情况?
STM32F103RBT6和STM32F103VET6的数据手册上写的都是1.25DMips/MHz,若按这个值算的话,一个指令周期是多长时间?上面两个测到的有正确的吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
其中一个的晶振没启动?把主频输出到MCO,上示波器看看主频对不对?以及ODR挺慢的,至少用BSRR和BRR试试吧
再就是不能在while里只切一次,得这么写
- while(1) {
- GPIOx->BSRR = GPIO_Pin_y;
- GPIOx->BRR = GPIO_Pin_y;
- GPIOx->BSRR = GPIO_Pin_y;
- GPIOx->BRR = GPIO_Pin_y;
- GPIOx->BSRR = GPIO_Pin_y;
- GPIOx->BRR = GPIO_Pin_y;
- ...
- }
复制代码然后在示波器里看脉冲宽度
一周热门 更多>