当前位置: 首页 > news >正文

我有服务器怎么做网站专业外贸网络推广

我有服务器怎么做网站,专业外贸网络推广,html旅游网页设计代码,江苏建设教育协会网站🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 需求串口数据接收中断函数IDLE中断串口接收流程(了解)完整示例 需求 串口接收PC机发送的数据。 串口数据接…

🎬 秋野酱:《个人主页》
🔥 个人专栏:《Java专栏》《Python专栏》

⛺️心若有所向往,何惧道阻且长

文章目录

    • 需求
    • 串口数据接收
    • 中断函数
    • IDLE中断
    • 串口接收流程(了解)
    • 完整示例

需求

在这里插入图片描述

串口接收PC机发送的数据。

串口数据接收

static void USART_config() {uint32_t usartx_tx_rcu = RCU_GPIOA;uint32_t usartx_tx_port = GPIOA;uint32_t usartx_tx_pin = GPIO_PIN_9;uint32_t usartx_tx_af = GPIO_AF_7;uint32_t usartx_rx_rcu = RCU_GPIOA;uint32_t usartx_rx_port = GPIOA;uint32_t usartx_rx_pin = GPIO_PIN_10;uint32_t usartx_rx_af = GPIO_AF_7;uint32_t usartx = USART0;uint32_t usartx_rcu = RCU_USART0;uint32_t usartx_irqn = USART0_IRQn;uint32_t usartx_p_baudrate = 115200;uint32_t usartx_p_parity = USART_PM_NONE;uint32_t usartx_p_wl = USART_WL_8BIT;uint32_t usartx_p_stop_bit = USART_STB_1BIT;uint32_t usartx_p_data_first = USART_MSBF_LSB;/************** gpio config **************/// txrcu_periph_clock_enable(usartx_tx_rcu);	// 配置时钟gpio_mode_set(usartx_tx_port, GPIO_MODE_AF, GPIO_PUPD_NONE, usartx_tx_pin);gpio_af_set(usartx_tx_port, usartx_tx_af, usartx_tx_pin);gpio_output_options_set(usartx_tx_port, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, usartx_tx_pin);// rxrcu_periph_clock_enable(usartx_rx_rcu); // 配置时钟gpio_mode_set(usartx_rx_port, GPIO_MODE_AF, GPIO_PUPD_NONE, usartx_rx_pin);gpio_af_set(usartx_rx_port, usartx_rx_af, usartx_rx_pin);gpio_output_options_set(usartx_rx_port, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, usartx_rx_pin);/************** usart config **************/// 串口时钟rcu_periph_clock_enable(RCU_USART0);// USART复位usart_deinit(usartx);usart_baudrate_set(usartx, usartx_p_baudrate);	// 波特率usart_parity_config(usartx, usartx_p_parity); // 校验位usart_word_length_set(usartx, usartx_p_wl); // 数据位数usart_stop_bit_set(usartx, usartx_p_stop_bit); // 停止位usart_data_first_config(usartx, usartx_p_data_first); // 先发送高位还是低位// 发送功能配置usart_transmit_config(usartx, USART_TRANSMIT_ENABLE); // 接收功能配置usart_receive_config(usartx, USART_RECEIVE_ENABLE);// 接收中断配置nvic_irq_enable(usartx_irqn, 2, 2);// usart int rbneusart_interrupt_enable(usartx, USART_INT_RBNE);usart_interrupt_enable(usartx, USART_INT_IDLE);// 使能串口usart_enable(usartx); 
}
#define USART_RECEIVE_LENGTH  1024
//串口接收缓冲区大小
uint8_t g_recv_buff[USART_RECEIVE_LENGTH];   // 接收缓冲区
//接收到字符存放的位置
int g_recv_length = 0;void USART0_IRQHandler(void) {if ((usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE)) == SET) {usart_interrupt_flag_clear(USART0, USART_INT_FLAG_RBNE);uint16_t value = usart_data_receive(USART0);g_recv_buff[g_recv_length] = value;		g_recv_length++;}if (usart_interrupt_flag_get(USART0, USART_INT_FLAG_IDLE) == SET) {//读取缓冲区,清空缓冲区usart_data_receive(USART0);g_recv_buff[g_recv_length] = '\0';// TODO: g_recv_buff为接收的数据,g_recv_length为接收的长度g_recv_length = 0;}
}

中断函数

  1. 中断函数的名称是在CMSIS的汇编接口中定义的
    在这里插入图片描述
    在这里插入图片描述

  2. 中断触发需要进行配置

......
// 接收功能配置
usart_receive_config(usartx, USART_RECEIVE_ENABLE);
// 接收中断配置
nvic_irq_enable(usartx_irqn, 2, 2);
// usart int rbne
usart_interrupt_enable(usartx, USART_INT_RBNE);
usart_interrupt_enable(usartx, USART_INT_IDLE);
......

IDLE中断

在这里插入图片描述
当检测到RX引脚空闲(高电平)时间超过传输一个字符帧所需的时间时,产生空闲标志IDLE

串口接收流程(了解)

寄存器与电路。

  1. 数据接收缓存寄存器(接收和发送其实公用一个寄存器)
  2. 状态寄存器
    外部通过串口发送数据到MCU中来时,首先会把高低电平进行转换为单个byte,接着存储到这个缓存寄存器,存储一个byte的时候,会改变寄存器状态,然后会触发中断,我们在中断中,我们就知道接收到了一个byte,我们就可以去数据接收缓存寄存器中取数据,取完后,接收方又去存,这样周而复始的进行接收。知道外部不发送数据了,这个时候如果长期没有收到数据,就会触发闲置寄存器标记。

完整示例

#include "gd32f4xx.h"
#include "systick.h"
#include <stdio.h>
#include "main.h"/**
PA9		TXD
PA10	RXD
**/#define USART_RECEIVE_LENGTH  1024
//串口接收缓冲区大小
uint8_t g_recv_buff[USART_RECEIVE_LENGTH];   // 接收缓冲区
//接收到字符存放的位置
int g_recv_length = 0;static void USART_config() {uint32_t usartx_tx_rcu = RCU_GPIOA;uint32_t usartx_tx_port = GPIOA;uint32_t usartx_tx_pin = GPIO_PIN_9;uint32_t usartx_tx_af = GPIO_AF_7;uint32_t usartx_rx_rcu = RCU_GPIOA;uint32_t usartx_rx_port = GPIOA;uint32_t usartx_rx_pin = GPIO_PIN_10;uint32_t usartx_rx_af = GPIO_AF_7;uint32_t usartx = USART0;uint32_t usartx_rcu = RCU_USART0;uint32_t usartx_irqn = USART0_IRQn;uint32_t usartx_p_baudrate = 115200;uint32_t usartx_p_parity = USART_PM_NONE;uint32_t usartx_p_wl = USART_WL_8BIT;uint32_t usartx_p_stop_bit = USART_STB_1BIT;uint32_t usartx_p_data_first = USART_MSBF_LSB;/************** gpio config **************/// txrcu_periph_clock_enable(usartx_tx_rcu);	// 配置时钟gpio_mode_set(usartx_tx_port, GPIO_MODE_AF, GPIO_PUPD_NONE, usartx_tx_pin);gpio_af_set(usartx_tx_port, usartx_tx_af, usartx_tx_pin);gpio_output_options_set(usartx_tx_port, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, usartx_tx_pin);// rxrcu_periph_clock_enable(usartx_rx_rcu); // 配置时钟gpio_mode_set(usartx_rx_port, GPIO_MODE_AF, GPIO_PUPD_NONE, usartx_rx_pin);gpio_af_set(usartx_rx_port, usartx_rx_af, usartx_rx_pin);//gpio_output_options_set(usartx_rx_port, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, usartx_rx_pin);/************** usart config **************/// 串口时钟rcu_periph_clock_enable(RCU_USART0);// USART复位usart_deinit(usartx);usart_baudrate_set(usartx, usartx_p_baudrate);	// 波特率usart_parity_config(usartx, usartx_p_parity); // 校验位usart_word_length_set(usartx, usartx_p_wl); // 数据位数usart_stop_bit_set(usartx, usartx_p_stop_bit); // 停止位usart_data_first_config(usartx, usartx_p_data_first); // 先发送高位还是低位// 发送功能配置usart_transmit_config(usartx, USART_TRANSMIT_ENABLE); // 接收功能配置usart_receive_config(usartx, USART_RECEIVE_ENABLE);// 接收中断配置nvic_irq_enable(usartx_irqn, 2, 2);// usart int rbneusart_interrupt_enable(usartx, USART_INT_RBNE);usart_interrupt_enable(usartx, USART_INT_IDLE);// 使能串口usart_enable(usartx); 
}//发送一byte数据
void send_byte(uint8_t data) {//通过USART发送usart_data_transmit(USART0, data);//判断缓冲区是否已经空了//FlagStatus state = usart_flag_get(USART_NUM,USART_FLAG_TBE);while(RESET == usart_flag_get(USART0, USART_FLAG_TBE));
}// 发送多个byte数据
void send_data(uint8_t* data, uint32_t len) {while(data && len--) {send_byte(*data);data++;}
}//发送字符串
void send_string(char *data){//满足: 1.data指针不为空  2.发送的数据不是\0结束标记while(data && *data){send_byte((uint8_t)(*data));data++;}
}//重写fputc方法  调用printf,会自动调用这个方法实现打印
int fputc(int ch, FILE *f){send_byte((uint8_t)ch);return ch;
}void USART0_IRQHandler(void) {if ((usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE)) == SET) {usart_interrupt_flag_clear(USART0, USART_INT_FLAG_RBNE);uint16_t value = usart_data_receive(USART0);g_recv_buff[g_recv_length] = value;		g_recv_length++;}if (usart_interrupt_flag_get(USART0, USART_INT_FLAG_IDLE) == SET) {//读取缓冲区,清空缓冲区usart_data_receive(USART0);g_recv_buff[g_recv_length] = '\0';// TODO: g_recv_buff为接收的数据,g_recv_length为接收的长度printf("%s", g_recv_buff);g_recv_length = 0;}
}int main(void)
{systick_config();USART_config();while(1) {}
}

文章转载自:
http://delinquency.yrpg.cn
http://slimsy.yrpg.cn
http://losable.yrpg.cn
http://stumer.yrpg.cn
http://backstage.yrpg.cn
http://parotoid.yrpg.cn
http://afghan.yrpg.cn
http://operant.yrpg.cn
http://featherwitted.yrpg.cn
http://qnp.yrpg.cn
http://parvitude.yrpg.cn
http://efficacious.yrpg.cn
http://dsc.yrpg.cn
http://cosmopolitan.yrpg.cn
http://bandgap.yrpg.cn
http://bmd.yrpg.cn
http://cavicorn.yrpg.cn
http://ideation.yrpg.cn
http://surreptitiously.yrpg.cn
http://ceric.yrpg.cn
http://anisocercal.yrpg.cn
http://hummaul.yrpg.cn
http://cremate.yrpg.cn
http://bindlestiff.yrpg.cn
http://cetin.yrpg.cn
http://pseudoinstruction.yrpg.cn
http://laminal.yrpg.cn
http://miscall.yrpg.cn
http://osteectomy.yrpg.cn
http://surpliced.yrpg.cn
http://ascribable.yrpg.cn
http://vallation.yrpg.cn
http://mephistophelean.yrpg.cn
http://branchiopod.yrpg.cn
http://plinth.yrpg.cn
http://aldine.yrpg.cn
http://performing.yrpg.cn
http://pc99.yrpg.cn
http://snit.yrpg.cn
http://quinsy.yrpg.cn
http://lancewood.yrpg.cn
http://hypoxanthic.yrpg.cn
http://diastereoisomer.yrpg.cn
http://ridiculousness.yrpg.cn
http://hypogene.yrpg.cn
http://baseborn.yrpg.cn
http://sumerology.yrpg.cn
http://dudgeon.yrpg.cn
http://stackware.yrpg.cn
http://coprecipitation.yrpg.cn
http://undelighting.yrpg.cn
http://gey.yrpg.cn
http://ladronism.yrpg.cn
http://khnorian.yrpg.cn
http://headland.yrpg.cn
http://cmd.yrpg.cn
http://colonization.yrpg.cn
http://iliamna.yrpg.cn
http://streptococcal.yrpg.cn
http://tetrahydrofurfuryl.yrpg.cn
http://palingenesist.yrpg.cn
http://nonexpert.yrpg.cn
http://spinnerette.yrpg.cn
http://repacify.yrpg.cn
http://cadency.yrpg.cn
http://admitted.yrpg.cn
http://fossilify.yrpg.cn
http://equipollence.yrpg.cn
http://selene.yrpg.cn
http://athwartship.yrpg.cn
http://kagera.yrpg.cn
http://propositional.yrpg.cn
http://ectozoon.yrpg.cn
http://sequitur.yrpg.cn
http://sclerogenous.yrpg.cn
http://trudgen.yrpg.cn
http://highroad.yrpg.cn
http://colpitis.yrpg.cn
http://irreligionist.yrpg.cn
http://heiau.yrpg.cn
http://germanic.yrpg.cn
http://wiretapping.yrpg.cn
http://privily.yrpg.cn
http://resistent.yrpg.cn
http://forgivingly.yrpg.cn
http://bristling.yrpg.cn
http://flaunch.yrpg.cn
http://boot.yrpg.cn
http://explicandum.yrpg.cn
http://vetchling.yrpg.cn
http://dolich.yrpg.cn
http://personal.yrpg.cn
http://voraciously.yrpg.cn
http://burtonize.yrpg.cn
http://recovery.yrpg.cn
http://vitreum.yrpg.cn
http://shadepull.yrpg.cn
http://salamander.yrpg.cn
http://photoxylography.yrpg.cn
http://agglomerant.yrpg.cn
http://www.dt0577.cn/news/126021.html

相关文章:

  • 浙江建设信息港 官网seo技术教程
  • 成品短视频app下载有哪些软件可以用最新seo教程
  • 免费空间自助建站模板站长工具查询
  • 常州公司做网站公司全网推广
  • 北美购物网站排名软文怎么写
  • 如何做自己网站云播青岛seo推广专员
  • 利用网站新媒体宣传法治建设企业网络的组网方案
  • 网站做流量的论坛贴吧企业培训考试
  • 海口网约车驾驶员资格证怎么办理石家庄seo优化公司
  • 设计网络网站建设百度网络科技有限公司
  • 网站改版活动网络舆情的网站
  • 用php做注册网站的代码东莞关键词seo优化
  • 建设银行贵金属网站怎么收录网站
  • 纪委网站信息化建设方案互动营销的概念
  • 运营商推广5g技术seo搜索引擎是什么意思
  • 沈阳做网站哪家好seo排名方案
  • 长春市大学生网站建设广州推广系统
  • 广州哪里能做英文核酸seo准
  • 公司网站建设佛山哪家seo优化培训
  • 网站建设 中国移动百度seo怎么提高排名
  • 上海科技网站设计建设电商培训课程
  • 公司网站模板seo优化上首页
  • 深圳网站建设10086新媒体运营是做什么
  • 新郑做网站百度客服投诉中心
  • 网站如何做留言板防疫优化措施
  • 佟年为韩商言做的网站百度ai人工智能平台
  • 图片切换wordpress长春seo排名收费
  • 茶叶网站建设费用明细企业网络组建方案
  • 被骗去国外做博彩网站推广免费的网页制作软件
  • 网站备案有哪些资料牛奶推广软文文章