一、主板的连接
1、TXD接口,接入A10
2、RXD接口,接入A9
其中A10,A9默认是通信位。
3、初始设置
BOOT0为1,BOOT1为0
二、软件设置
1、设置 DTR高电平、RTS高电平
2、端口号和波特率设置
三、程序代码
#include "stm32f10x.h"
/*******************************************************************************
* 函 数 名 : delay_us
* 函数功能 : 延时函数,延时us
* 输 入 : i
* 输 出 : 无
注意:以上两函数中间的参数u32 i不能超过1800,举例,想定时一分钟,可以通过for循环让delay_ms(1000)走60次,而不能使用delay_ms(60000),不然程序就出错了。
https://www.cnblogs.com/jiwangbujiu/p/5463751.html
*******************************************************************************/
void delay_us(u32 i)
{
u32 temp;
SysTick->LOAD=9*i; //设置重装数值, 72MHZ时
SysTick->CTRL=0X01; //使能,减到零是无动作,采用外部时钟源
SysTick->VAL=0; //清零计数器
do
{
temp=SysTick->CTRL; //读取当前倒计数值
}
while((temp&0x01)&&(!(temp&(1<<16)))); //等待时间到达
SysTick->CTRL=0; //关闭计数器
SysTick->VAL=0; //清空计数器
}
/*******************************************************************************
* 函 数 名 : delay_ms
* 函数功能 : 延时函数,延时ms
* 输 入 : i
* 输 出 : 无
注意:以上两函数中间的参数u32 i不能超过1800,举例,想定时一分钟,可以通过for循环让delay_ms(1000)走60次,而不能使用delay_ms(60000),不然程序就出错了。
*******************************************************************************/
void delay_ms(u32 i)
{
u32 temp;
SysTick->LOAD=9000*i; //设置重装数值, 72MHZ时
SysTick->CTRL=0X01; //使能,减到零是无动作,采用外部时钟源
SysTick->VAL=0; //清零计数器
do
{
temp=SysTick->CTRL; //读取当前倒计数值
}
while((temp&0x01)&&(!(temp&(1<<16)))); //等待时间到达
SysTick->CTRL=0; //关闭计数器
SysTick->VAL=0; //清空计数器
}
int main()
{
SystemInit();
//开启afio时钟
RCC->APB2ENR |= 0x00000001;
//关闭JTAG
//AFIO->MAPR = (0x00FFFFFF & AFIO->MAPR)|0x04000000;
RCC->APB2ENR|=0X0000001c; //先使能外设IO PORTa,b,c时钟
GPIOB->CRH=0X33333333; //推挽输出
GPIOB->CRL=0X33333333; //推挽输出
GPIOC->CRH=0X33333333; //推挽输出
GPIOC->CRL=0X33333333; //推挽输出
GPIOA->CRH=0X33333333; //推挽输出
GPIOA->CRL=0X33333333; //推挽输出
while (1)
{
delay_ms(200);
GPIOC->ODR=0; //全部输出0
delay_ms(200);
GPIOC->ODR=0xffffffff; //全部输出1
}
return 0;
}
四、下载hex程序
编译后生成hex文件,如果没有hex文件,在工程设置里面,Create HEX File选中即可
五、效果
主板开始闪烁
六、调整程序
1、先修改程序闪烁时间
while (1)
{
delay_ms(1000);
GPIOC->ODR=0; //全部输出0
delay_ms(1000);
GPIOC->ODR=0xffffffff; //全部输出1
}
2、编译生成hex
3、复位
按一下复位键,主板停止闪烁,处于接收状态。重新下载hex文件,即可进行闪烁。