刚刚提了个问,不小心给提交解决了。我使用的是STM32f103c8的芯片,刚刚吧开发环境搭建好,写了第一个程序,但是相应的io没反应。程序运行没错误,生成了HEX文件。下面我附上程序。请指教下,谢谢。
#include "stm32f10x.h"
void Delay(__IO u32 nCount);
void LED_GPIO_Config(void);
/*
* 函数名:main
* 描述 :主函数
* 输入 :无
* 输出 :无
*/
int main(void)
{
/* 配置系统时钟为72M */
SystemInit();
/* LED 端口初始化 */
LED_GPIO_Config();
while (1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_4 ); // 亮
// Delay(0x8FFFEF);
// GPIO_ResetBits(GPIOB, GPIO_Pin_4 ); // 灭
}
}
void Delay(__IO u32 nCount)
{
for(; nCount != 0; nCount--);
}
/******************* (C) COPYRIGHT *****END OF FILE****/
/*
* 函数名:LED_GPIO_Config
* 描述 :配置LED用到的I/O口
* 输入 :无
* 输出 :无
*/
void LED_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB, GPIO_Pin_4 ); // turn off all led
}
不行感觉好像没有将GPIO口初始化成功。依旧什么反应都没,我只是控制亮或者灭都不行。
不行感觉好像没有将GPIO口初始化成功。依旧什么反应都没,我只是控制亮或者灭都不行。
追答是在线调试的,还是下载到目标板上的?
用的是keil?
吓到目标板上,用的是keil
追答说不定是下载问题,直接在线调试来试试
注意keil中RAM,ROM地址设置要正确,debug选项也要选好。
因为这个板子是之前学51的,当时学51一起买,所以不知道要Jlink,所以就只是买了芯片,不能在线仿真。是一套51和avr。stm32一起的。不过遗憾当时没买仿真线
追答是生成hex文件,然后用Cortex-M3 STM32 ISP软件通过串口下载的?
下载有没有什么提示信息?还是就是成功的?
板子上的boot0和boot1,还有USART的跳线有没有问题?
我找到问题了,但是我不知这两句是什么思RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);。第一个就是RCC_APB2Periph_AFIO使能,另外一个就是下面接着那句。
没注意到端口的选择.PB4默认功能是JTAG的TRST,要让它工作在GPIO的PB4模式需要使用端口重映射,所以要给端口重映射模块时钟和关闭调试功能.
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO, ENABLE);中的RCC_APB2Periph_AFIO就是给端口重映射模块的时钟使能.
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);就是关闭调试功能