你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
stm18647293236 提问时间:2018-11-16 08:13 /
请高手帮忙看一下,我是小白,用的是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)
收藏 评论11 发布时间:2018-11-16 08:13

举报

11个回答
mzy2364 回答时间:2018-11-16 08:21:13
ISP的问题吧,你换个STLINK仿真器,淘宝才十几块钱

评分

参与人数 1蝴蝶豆 +1 收起 理由
STMCU + 1

查看全部评分

废鱼 回答时间: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
只要能编译过去,能够生成烧写文件即可。具体操作是否正确,这个还是需要根据寄存器的描述,和写入值的内容去做对比。具体到代码操作是否真确,还是需要自己去实际操作一下。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

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

谢谢,
TLLED 回答时间:2018-11-16 10:59:09
是仿真器下载还是ISP软件下载
stm18647293236 回答时间:2018-11-19 15:48:02
TLLED 发表于 2018-11-16 10:59
是仿真器下载还是ISP软件下载

ISP软件下载
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版