第三周-GD32F4XX的配置和函数归纳(3)

GD32F4XX的配置和函数归纳(3)

1.看了几个例程,并且把经常用到的通用同步异步收发器(USART)和中断/事件控制器(EXTI)的配置归纳了一下,并且看了一些相应的例程
2.课上数字图像处理的python作业
3.OFDM循环谱及问题


1.通用同步异步收发器(USART)

重定向到 USART的printf函数是来自下面这个函数

/* retarget the C library printf function to the USART */
int fputc(int ch, FILE *f)
{
    usart_data_transmit(EVAL_COM0, (uint8_t)ch);
    while(RESET == usart_flag_get(EVAL_COM0, USART_FLAG_TBE));
    return ch;
}

其中:

/*!
    \brief      USART transmit data function
    \param[in]  usart_periph: USARTx(x=0,1,2,5)/UARTx(x=3,4,6,7)
    \param[in]  data: data of transmission 
    \param[out] none
    \retval     none
*/
void usart_data_transmit(uint32_t usart_periph, uint32_t data)
{
    USART_DATA(usart_periph) = ((uint16_t)USART_DATA_DATA & data);
}

所以用了上面这个函数后,可以直接printf(" ")来向超级终端发送指令,在此之后还需要加上等待发送完成的程序:

/* wait for completion of USART transmission */
while(RESET == usart_flag_get(EVAL_COM0, USART_FLAG_TC))
{  }

如果是等待发送/接受结束,就不能只靠检测com口状态来判断,而是通过判断已发送/接受数目和待发送/接受数目来判断是否完成,从而进行下一步操作。

/* wait until USART0 send the tx_buffer */
while(tx_counter < nbr_data_to_send){  }    
/* wait until USART0 receive the rx_buffer */
while(rx_counter < nbr_data_to_read){  }

之后,再继续做判断。相应的,在GD-LINK上应该显示出相应的字符串。由于本周疫情没有拿单片机,准备下次再做一下这个操作,如果可行,可以设置一下计算,让单片机做运算,返回结果值。

2.中断/事件控制器(EXTI)

EXTI 产生外部中断一般有三步,例如将按键key当做外部中断来判断:
1.首先设置中断优先级,EXTI10_15_IRQn是从中断向量表找到的:
在这里插入图片描述
2.将key(PC13)的中断与GPIO连接
在这里插入图片描述
3.配置该按键的,再将此中断的标识清楚

/* enable and set key EXTI interrupt priority */
nvic_irq_enable(EXTI10_15_IRQn, 2U, 0U);
/* connect key EXTI line to key GPIO pin */
syscfg_exti_line_config(EXTI_SOURCE_GPIOC,EXTI_SOURCE_PIN13);
/* configure key EXTI line */
exti_init(EXTI_13, EXTI_INTERRUPT, EXTI_TRIG_RISING);
exti_interrupt_flag_clear(EXTI_13);

3.eval集成库

之前想要用GPIO等库来表示,但是有eval库可以直接控制,但是它是针对含外设的开发板,不知道能不能用得到,但是可以给进一步集成函数提供思路

/* function declarations */
/* configures led GPIO */
void gd_eval_led_init(led_typedef_enum lednum);
/* turn on selected led */
void gd_eval_led_on(led_typedef_enum lednum);
/* turn off selected led */
void gd_eval_led_off(led_typedef_enum lednum);
/* toggle the selected led */
void gd_eval_led_toggle(led_typedef_enum lednum);
/* configure key */
void gd_eval_key_init(key_typedef_enum key_num, keymode_typedef_enum key_mode);
/* return the selected button state */
uint8_t gd_eval_key_state_get(key_typedef_enum button);
/* configure COM port */
void gd_eval_com_init(uint32_t com);

4.数字图像处理

学习了高斯模糊方法、sobel和canney进行边缘提取、harris进行角点提取。
1.高斯模糊:
2.sobel和canney进行边缘提取
3.harris进行角点提取
不同阈值下的角点提取
在这里插入图片描述

4.循环谱OFDM

前几周仿真令PSK的循环谱,本周用OFDM信号进行求循环谱
为了方便看效果,这里将三维循环谱展开,可以看出它的分别,在alpha=0轴,有许多峰值,不太清楚着是不是 OFDM的子通道,因为PSK没有,只有正负两个峰值。
在这里插入图片描述
然后利用循环谱提前特征的方法来验证特征,先找到alpha=0的第一个峰值:
在这里插入图片描述
然后将其除以2,约等于650,找到f=fc,求出符号速率
在这里插入图片描述
改了三次参数,两次是验证成功的,还有一次是不行的,如果下周还是不能去实验室,把这个地方弄懂。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值