打印

STM32F100C8T6使用问题

[复制链接]
4670|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddk2006|  楼主 | 2013-1-17 14:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用STM32F100C8T6开发一个项目,发觉连最基本的GPIO都控制不了,keil MDK-ARM 4.03,发现在debug时,GPIO输出寄存器是会变化的,但是在板子上就是量不到,试了两个板子和两个GPIO都不行,不知道是怎么回事,我以前是用STM32F103的。
代码如下:

#include "stm32f10x.h"

GPIO_InitTypeDef GPIO_InitStructure;
#define LED1_ON GPIO_SetBits(GPIOA, GPIO_Pin_15);
#define LED1_OFF GPIO_ResetBits(GPIOA, GPIO_Pin_15);

#define LED2_ON GPIO_SetBits(GPIOB, GPIO_Pin_3);
#define LED2_OFF GPIO_ResetBits(GPIOB, GPIO_Pin_3);

#define LED3_ON GPIO_SetBits(GPIOB, GPIO_Pin_12);
#define LED3_OFF GPIO_ResetBits(GPIOB, GPIO_Pin_12);

void RCC_Configuration(void);
void LED_Config(void);
void Delay(__IO uint32_t nCount);

/****************************************************************************
* 名 称:void LED_Config(void)
* 功 能:LED 控制初始化函数
* 入口参数:无
* 出口参数:无
* 说 明:
* 调用方法:无
****************************************************************************/
void LED_Config(void){
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB , ENABLE);       
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;         //LED1 V6         //将V6,V7,V8 配置为通用推挽输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;         //口线翻转速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure);       

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_3;         //LED2, LED3         V7 V8
GPIO_Init(GPIOB, &GPIO_InitStructure);
}

/****************************************************************************
* 名 称:int main(void)
* 功 能:主函数
* 入口参数:无
* 出口参数:无
* 说 明:
* 调用方法:无
****************************************************************************/
int main(void)
{
RCC_Configuration(); //系统时钟配置
LED_Config();         //LED控制配置
while (1)
{
LED1_ON; LED2_OFF; LED3_OFF;       
Delay(0xAFFFF);
LED1_OFF; LED2_ON; LED3_OFF;       
Delay(0xAFFFF);
LED1_OFF; LED2_OFF; LED3_ON;       
Delay(0xAFFFF);
}
}

/****************************************************************************
* 名 称:void RCC_Configuration(void)
* 功 能:系统时钟配置为72MHZ
* 入口参数:无
* 出口参数:无
* 说 明:
* 调用方法:无
****************************************************************************/
void RCC_Configuration(void)
{
SystemInit();
}

/****************************************************************************
* 名 称:void Delay(__IO uint32_t nCount)
* 功 能:延时函数
* 入口参数:无
* 出口参数:无
* 说 明:
* 调用方法:无
****************************************************************************/
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
沙发
uet_cache| | 2013-1-17 14:30 | 只看该作者
看起没什么问题,你可以用仿真单步执行,用万用表测IO电压。。。看问题 出在哪里。。

使用特权

评论回复
板凳
ddk2006|  楼主 | 2013-1-17 15:05 | 只看该作者
多谢回复。
我就是用jlink仿真单步调试的,寄存器输出是正常的,但是板子上量测没有任何变化,纠结

使用特权

评论回复
地板
uet_cache| | 2013-1-17 15:20 | 只看该作者
跟你硬件有关吧。你换个引脚,看能不能置高置低,如果电压输出正确,理应没问题。。。

使用特权

评论回复
5
ninazhou| | 2013-1-17 17:23 | 只看该作者
关注,看看100和103有什么区别

使用特权

评论回复
6
明月小厨| | 2013-1-18 00:24 | 只看该作者
如果你直接用寄存器编程,直接看对应的手册;
如果你是用库编程,100和103共用一套库文件,但是,有编译的开关;如果你没有调整这些开关,会出现什么结果不好说;
101,102,103的差别不大,但100另类些;
你可以焊一个103上去试试,然后对比100和103;如果出现不同,估计问题是出在这里了;
100对应的编译开关是 xxx.xx_cl

使用特权

评论回复
7
duci001| | 2013-1-18 08:27 | 只看该作者
将SystemInit(); 理一理,,,,,

看看时钟各个定义!

使用特权

评论回复
8
zhaoyu2005| | 2013-1-18 15:15 | 只看该作者
LZ,你确认你这个程序是从103上直接搬过来的或者在103上试过能用的?
PA15、PB3默认是JTAG接口,你得先禁用了JTAG才能作为GPIO用,用SWD仿真。
PB12倒是直接可以控制,但是不知道是不启用了串口功能,如果启用了就也不行了,所以还得仔细看datasheet

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

14

帖子

0

粉丝