stm18647293236 发表于 2018-11-16 08:13:24

请高手帮忙看一下,我是小白,用的是STM32F051C8T6的板子

请高手帮忙看一下,我是小白,用的是STM32F051C8T6的板子
(用下面的命令)生成了HEX文件,用ISP写入板子时没有报错,但是提示写入0KB,板子没有任何反应。是那里有问题?谢谢

main.c

#include "stm32f051.h"

/**
*   主函数
*/
int main(void)
{
// 开启GPIOB 端口时钟
RCC_APB2ENR |= (1<<3);
RCC_AHB1ENR |= (0<<17);
RCC_AHB1ENR |= (0<<18);
RCC_AHB1ENR |= (0<<19);
RCC_AHB1ENR |= (0<<20);

GPIOA_MODER |= (1<<24);
GPIOA_OTYPER |= (1<<12);
GPIOA_OSPEEDR |=(1<<24) ;
GPIOA_PUPDR|= (1<<25);

GPIOA_ODR &= ~(1<<11);
GPIOA_ODR &= ~(1<<12);
GPIOA_ODR &= ~(1<<13);
GPIOA_ODR &= ~(1<<14);
GPIOA_ODR &= ~(1<<15);

while(1);
}
void SystemInit(void)
{
}
/*********************************************END OF FILE**********************/



stm32f051.h

/*本文件用于添加寄存器地址及结构体定义*/
/*片上外设基地址*/
#define PERIPH_BASE         ((unsigned int)0x40000000)

/*AHB1 总线基地址 */
#define AHB1PERIPH_BASE       (PERIPH_BASE + 0x20000)
/*RCC外设基地址*/
#define RCC_BASE      (AHB1PERIPH_BASE + 0x1000)
/*RCC的AHB1时钟使能寄存器地址,强制转换成指针*/
#define RCC_AHB1ENR   *(unsigned int*)(RCC_BASE+0x14)

/*AHB2 总线基地址 */
#define AHB2PERIPH_BASE       (PERIPH_BASE + 0x8000000)
/*GPIOA外设基地址*/
#define GPIOA_BASE            (AHB2PERIPH_BASE + 0x0000)
#define GPIOB_BASE            (AHB2PERIPH_BASE + 0x0400)
#define GPIOC_BASE            (AHB2PERIPH_BASE + 0x0800)
#define GPIOD_BASE            (AHB2PERIPH_BASE + 0x0C00)

/* GPIOB寄存器地址,强制转换成指针 */

#define GPIOA_MODER      *(unsigned int*)(GPIOA_BASE+0x00)
#define GPIOA_OTYPER       *(unsigned int*)(GPIOA_BASE+0x04)
#define GPIOA_OSPEEDR      *(unsigned int*)(GPIOA_BASE+0x08)
#define GPIOA_PUPDR      *(unsigned int*)(GPIOA_BASE+0x0C)
#define GPIOA_IDR          *(unsigned int*)(GPIOA_BASE+0x10)
#define GPIOA_ODR          *(unsigned int*)(GPIOA_BASE+0x14)
#define GPIOA_BSRR         *(unsigned int*)(GPIOA_BASE+0x18)
#define GPIOA_LCKR         *(unsigned int*)(GPIOA_BASE+0x1C)
#define GPIOA_AFRL         *(unsigned int*)(GPIOA_BASE+0x20)
#define GPIOA_AFRH         *(unsigned int*)(GPIOA_BASE+0x24)
#define GPIOA_BRR          *(unsigned int*)(GPIOA_BASE+0x28)

mzy2364 发表于 2018-11-16 08:21:13

ISP的问题吧,你换个STLINK仿真器,淘宝才十几块钱

发表于 2018-11-16 08:22:26

楼主,在ISP下,读取芯片时,芯片型号是否正确?

stm18647293236 发表于 2018-11-16 09:16:34

mzy2364 发表于 2018-11-16 08:21
ISP的问题吧,你换个STLINK仿真器,淘宝才十几块钱

谢谢,我以为命令错了那,改了多次。

stm18647293236 发表于 2018-11-16 09:17:33

安 发表于 2018-11-16 08:22
楼主,在ISP下,读取芯片时,芯片型号是否正确?

谢谢,我都没注意这个问题。

stm18647293236 发表于 2018-11-16 09:18:59

安 发表于 2018-11-16 08:22
楼主,在ISP下,读取芯片时,芯片型号是否正确?

麻烦,在问一下,我写的命令有不正确的吗。谢谢

发表于 2018-11-16 09:40:28

没有看到你写什么命令啊,你用的不是STMFlashLoader吗?这个是软件去控制写入的。你代码里面写的和烧写过程没有关系。

stm18647293236 发表于 2018-11-16 09:49:49

安 发表于 2018-11-16 09:40
没有看到你写什么命令啊,你用的不是STMFlashLoader吗?这个是软件去控制写入的。你代码里面写的和烧写过程 ...
不好意思我没说清楚,
就是main.c 和 stm32f051.h 写的有错吗?谢谢

发表于 2018-11-16 10:15:38

只要能编译过去,能够生成烧写文件即可。具体操作是否正确,这个还是需要根据寄存器的描述,和写入值的内容去做对比。具体到代码操作是否真确,还是需要自己去实际操作一下。

stm18647293236 发表于 2018-11-16 10:35:30

安 发表于 2018-11-16 10:15
只要能编译过去,能够生成烧写文件即可。具体操作是否正确,这个还是需要根据寄存器的描述,和写入值的内容 ...

谢谢,
页: [1] 2
查看完整版本: 请高手帮忙看一下,我是小白,用的是STM32F051C8T6的板子