范例代码浅析
1 创建Keil开发环境
1.1 安装好Keil并注册,然后下载并安装keil开发包,这样在Keil的新建工程中,就可以发现这个芯片了
1.2 随后启动范例代码工程,自动打开Keil工程
编译后顺利通过,这个代码运行正常。
不过compiler需要时5.x版本,最新的6.x版本不能通过。因为采用了不兼容的progma命令。
2 连接开发板并下载代码
这个只用SWO和SCL两个引脚就够了,不用Reset引脚,采用公版CMSIS-DAP调试器就可以,能够读出芯片的UUID号
编译和下载顺利通过
说明代码完整有效。
3 范例代码分析
#include "cds871x_conf.h"
#include "cds871x_debug.h"
#include "delay.h"
void gpio_default(void);
void usart_initiate(void);
int main(void)
{
int ret;
delay_init();
gpio_default();
usart_initiate();
while(1)
{
gpio_bit_write(GPIO_GROUP_B,GPIO_PIN_NUM4,BIT_SET);
ret = gpio_input_data_bit_read(GPIO_GROUP_A,GPIO_PIN_0);
printf("When the PB4 is high level, PA0 = %d",ret);
delay_ms(500);
gpio_bit_write(GPIO_GROUP_B,GPIO_PIN_NUM4,BIT_RESET);
ret = gpio_input_data_bit_read(GPIO_GROUP_A,GPIO_PIN_0);
printf("When the PB4 is low level, PA0 = %d",ret);
delay_ms(500);
}
}
void gpio_default(void)
{
gpio_config_t ptr_config;
rcc_ahb_periph_clock_enable_ctrl(RCC_AHBPeriph_GPIOA, ENABLE);
rcc_ahb_periph_clock_enable_ctrl(RCC_AHBPeriph_GPIOB, ENABLE);
ptr_config.mode = GPIO_MODE_IN;
ptr_config.pin = GPIO_PIN_0;
ptr_config.pull = GPIO_PULL_NO_PULL;
gpio_init(GPIO_GROUP_A,&ptr_config);
ptr_config.mode = GPIO_MODE_OUT_PP;
ptr_config.pin = GPIO_PIN_4;
ptr_config.pull = GPIO_PULL_UP;
gpio_init(GPIO_GROUP_B,&ptr_config);
}
void usart_initiate(void)
{
usart_config_t r_usart_config;
rcc_apb_periph_clock_enable_ctrl(RCC_APBPeriph_USART,ENABLE);
r_usart_config.usart_rate = 38400;
r_usart_config.data_width = USART_DATA_WIDTH_8;
r_usart_config.usart_parity = DISABLE;
r_usart_config.stop_bits = USART_STOP_BIT_1;
r_usart_config.usart_mode = USART_MODE_RX|USART_MODE_TX;
usart_init(&r_usart_config);
gpio_mf_config(GPIO_GROUP_B,GPIO_PIN_NUM5,GPIO_MUX_FUNC_4);
usart_direction_enable_ctrl(USART_MODE_TX,ENABLE);
usart_enable_ctrl(ENABLE);
}
这个代码是初始化了PA0和PB4,读取PB4的高低电平,输出到PA0显示。功能显示正常。