小学生
最后登录1970-1-1
在线时间 小时
注册时间2020-5-23
|
本帖最后由 浮云来客 于 2020-5-23 19:38 编辑
源代码,
#include "stm32f10x.h" //STM32系统头文件
//startup_stm32f10x_md.s启动文件
/*开拓者开发版LED灯:LED0=PA8 LED1 =PD2 LED2=PC12
APB2外设时钟使能寄存器(RCC_APB2ENR) 0x18
RCC地址0x4002 1000 ,RCC在此总线上
GPIOA的起始映射地址为0x4001 0800 //GPIOC的起始映射地址为0x4001 1000
GPIOD的起始映射地址为0x4001 1400
端口配置低CRL(0x00) 端口配置高 CRH(0x04)
端口输入数据IDR(0X08) 端口输出数据ODR(0X0C)
端口位设置/清除BSRR(0X10) 端口位清除BRR(0x14)
端口配置锁定LCKR(0X18)
#define setbit(x,y) x|=(1<<y) //将x的第y位置1
#define clrbit(x,y) x&=~(1<<y) //将x的第y位清0
*/
int main (void) //主函数
{
#if 1
*( unsigned int * )(0x40021000 + 0x18) |= (1<<2); //打开GPIOA的时钟
*( unsigned int * )(0x40011000 + 0x00) |= (1<<(4*0)); //将CRL寄存器配置为0x0001,技术配置PA口为推挽输出,速度为10M
*( unsigned int * )(0x40011000 + 0x0c) &= ~(1<<8);//(0x40010800 +0x0c)只是一个立即数,要让他是地址的话就必须强制类型转换(unsigned int *)转换为指针类型
//直接操作寄存器地址ODR 控制PA8口,找到ODR的地址,为PA口的基地址加上ODR的偏移地址
//&= ~(1<<8),表示ODR寄存器的第8为清零,即PA8
#endif
}
void SystemInit(void )
{
//函数体为空,目的是为了骗过编译器不报错。
}
//以上是全部代码
/************************分割线*********************/
看的视频第7集。
按照视频操作来的,需要控制PA8口拉低。推挽输出,速度10M
采用的Keil 4编译的,下载器采用的是J-LINK V8 (这个只能用于Keil 4使用)
J-LINK配置如图所示。
启动文件如图所示。
新手小白。
现在问题是,用仿真器可以正常下载,下载成功后,LED0(即PA8口)并没有亮。
想知道问题出在哪里,是我配置出错了吗?
|
-
启启动文件配置
-
J-LINK配置1
-
J-LINK配置2
|