新手上路
- 积分
- 39
- 金钱
- 39
- 注册时间
- 2017-12-13
- 在线时间
- 8 小时
|
1金钱
试着移植寄存器版本的程序。我进行了如下的尝试及操作。
使用的DEMO为老战舰版本的寄存器程序例程。
1.串口的程序仅仅修改了启动头文件 STM32F103_HD 改为 STM32F103_MD 后就可以正常的串口输出。(F103C8T6 的 Flash 为128K 属于中型)
2.想尝试移植修改流水灯的程序
a)修改了启动头文件为 STM32F103_MD
b)修改 led.c 内容(F103C8T6 仅仅有 GPIOA 以及 GPIOB 端口)
#include "led.h"
void LED_Init(void)
{
RCC -> APB2ENR |= 1 << 2; //STM32中文参考手册 P97 GPIOA 的使能位为 2
RCC -> APB2ENR |= 1 << 3; //STM32中文参考手册 P96 GPIOB 的使能位为 3
GPIOA -> CRL &= 0XFF0FFFFF;
GPIOA -> CRL &= 0X00300000; //推挽输出
GPIOA -> ODR |= 1 << 5; //推挽输出为高电平
GPIOB -> CRL &= 0XFF0FFFFF;
GPIOB -> CRL &= 0X00500000; //推挽输出
GPIOB -> ODR |= 1 << 5; //推挽输出为高电平
}
c)修改了 led.h 内容
#ifndef __LED_H
#define __LED_H
#include "sys.h"
#define LED0 PAout(5)// DS0
#define LED1 PBout(5)// DS1
void LED_Init(void);
#endif
编译通过,没有错误以及警告。但是引脚并没有任何的输出。
问题出在哪呢?是 sys.h 中地址错误了么?
|
最佳答案
查看完整内容[请看2#楼]
GPIOA -> CRL &= 0XFF0FFFFF;
GPIOA -> CRL |= 0X00300000; //推挽输出
GPIOA -> ODR |= 1 CRL &= 0XFF0FFFFF;
GPIOB -> CRL |= 0X00300000; //推挽输出
|