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

企业营销型网站系统做电商需要学哪些基础

企业营销型网站系统,做电商需要学哪些基础,做网站需要准备资料,网站建设前准备工作GD32F103VE的TAMPER引脚(PC13)#xff0c;当PC13输入低电平时#xff0c;会产生一个侵入检测事件。它会将所有“数据备份寄存器”内容清除。 这个功能有什么用#xff1f; 一是防止被人开壳#xff0c;抄袭。二是自毁功能。 直奔主题#xff0c;多一句就是浪费时间。测试…GD32F103VE的TAMPER引脚(PC13)当PC13输入低电平时会产生一个侵入检测事件。它会将所有“数据备份寄存器”内容清除。 这个功能有什么用 一是防止被人开壳抄袭。二是自毁功能。 直奔主题多一句就是浪费时间。测试程序如下 #include TamperDetectionFunction.h #include stdio.h //使能printf(),sprintf() //#include LED.h/* 当TAMPER引脚上的信号从0到1或从1到0 取决于备份控制寄存器BKP_TPCTL的TPAL位, 会产生一个侵入检测事件; 侵入检测事件会将所有数据备份寄存器内容清除。 */#define BKP_DATA_REG_NUM 42 //备份寄存器有42个void write_backup_register(uint16_t data); uint32_t check_backup_register(uint16_t data); uint32_t is_backup_register_clear(void); void TamperDetectionFunction_Init(void);//函数功能:TAMPER引脚(PC13)输入低电平时,会产生一个侵入检测事件,它会将所有数据备份寄存器内容清除。 //为防止侵入事件丢失,PC13引脚检测到边沿检测信号与TPEN位的逻辑与作为侵入检测信号 void TamperDetectionFunction_Init(void) {//MCU提供侵入检测功能以保护重要的用户数据,可通过设置BKP_TPCTL寄存器中的TPEN位来使能TAMPER引脚对应的功能。nvic_irq_enable(TAMPER_IRQn,0,0);//设置TAMPER_IRQn的中断优先级,抢占优先级为0,子优先级为0rcu_periph_clock_enable(RCU_PMU);//使能RCU_PMU时钟rcu_periph_clock_enable(RCU_BKPI);//使能RCU_BKPI时钟pmu_backup_write_enable(); //使能对备份域寄存器的写访问bkp_tamper_active_level_set(TAMPER_PIN_ACTIVE_LOW); //配置TAMPER引脚(PC13)输入低电平有效bkp_tamper_detection_disable();//不使能TAMPER引脚(PC13)实现备份复位功能bkp_interrupt_disable(); //不使能TAMPER-RTC引脚(PC13)侵入中断bkp_flag_clear(); //清除TAMPER-RTC引脚(PC13)侵入事件标志bkp_interrupt_enable(); //使能TAMPER引脚(PC13)侵入中断bkp_tamper_detection_enable(); //使能TAMPER引脚(PC13)可实现备份复位功能/*bkp_data_write(BKP_DATA_41,0xA0A0);//将0xA0A0写入备份数据寄存器41if(bkp_data_read(BKP_DATA_41)0xA0A0) LED2_On();else LED3_On(); */write_backup_register(0x1226);//将0x1226写入地址为BKP_DATA_0的备份寄存器if(0x00 check_backup_register(0x1226))//写入备份数据寄存器正确{ // MCU_Led_On();//写入备份数据寄存器正确printf(\r\nwrite_backup_register OK!!!);}else//写入备份数据寄存器不正确{ // MCU_Led_Off();//写入备份数据寄存器不正确printf(\r\nwrite_backup_register Error!!!);} }//函数功能:将data,data0x50,data0x50*2,......data0x50*41,写入备份寄存器 void write_backup_register(uint16_t data) {uint32_t temp 0;/* write data to backup data registers */for (temp 0; temp BKP_DATA_REG_NUM; temp){bkp_data_write( (bkp_data_register_enum)(temp1),(data (temp * 0x50)) );//BKP_DATA_0的初始值为1,所以这里要用(temp1) // if(temp 10) // { // BKP_DATA0_9(temp) data (temp * 0x50); // } // else // { // BKP_DATA10_41(temp) data (temp * 0x50); // }} }//函数功能:从备份寄存器读取数据,并比较;若发现错误,则返回 uint32_t check_backup_register(uint16_t data) {uint32_t temp 0;for(temp 0; temp BKP_DATA_REG_NUM; temp){if(bkp_data_read( (bkp_data_register_enum)(temp1) ) ! (data (temp * 0x50)) ){//BKP_DATA_0的初始值为1,所以这里要用(temp1)return temp1;//发现错误}// if(temp 10) // { // //get data from data register 0-9 // if(data (temp * 0x50) ! BKP_DATA_GET(BKP_DATA0_9(temp))) // { // return temp1; // } // } // else // { // //get data from data register 10-41 // if(data (temp * 0x50) ! BKP_DATA_GET(BKP_DATA10_41(temp))) // { // return temp1; // } // }}return 0; }//函数功能:检查备份寄存器的数据是否为0x0000,并比较;若发现不是0x0000,则返回 uint32_t is_backup_register_clear(void) {uint32_t temp 0;for(temp 0; temp BKP_DATA_REG_NUM; temp){if(bkp_data_read((bkp_data_register_enum)(temp1))!0x0000){//BKP_DATA_0的初始值为1,所以这里要用(temp1)return temp1;//发现错误} // if(temp 10) // { // //check if the data of data register 0-9 is 0x0000 // if(0x0000 ! BKP_DATA_GET(BKP_DATA0_9(temp))) // {//BKP_DATA_GET(BKP_DATA0_9(temp)和bkp_data_read( (temp1))等价 // return temp1; // } // } // else // { // // check if the data of data register 10-41 is 0x0000 // if(0x0000 ! BKP_DATA_GET(BKP_DATA10_41(temp))) // {//BKP_DATA_GET(BKP_DATA10_41(temp)和bkp_data_read( (temp1))等价 // return temp1; // } // }}return 0; }//函数功能:TAMPER引脚(PC13)侵入中断服务函数 //bkp_tamper_active_level_set(TAMPER_PIN_ACTIVE_LOW)配置TAMPER引脚(PC13)输入低电平有效 //TAMPER引脚(PC13)输入低电平时,会产生一个侵入检测事件,它会将所有数据备份寄存器内容清除。 void TAMPER_IRQHandler(void) {if(RESET ! bkp_interrupt_flag_get())//读取TAMPER-RTC引脚(PC13)侵入中断标志{if(0 is_backup_register_clear())//发现侵入事件清除了备份数据寄存器{//备份数据寄存器中的数据被清除了 // MCU_Led_On();printf(\r\nClear backup_register!!!);}else//发现侵入事件没有清除备份数据寄存器{//备份数据寄存器中的数据没有被清除 // MCU_Led_On();printf(\r\nDont Clear backup_register!!!);}bkp_interrupt_flag_clear();//清除TAMPER-RTC引脚(PC13)侵入中断标志,clear the interrupt bit flag of tamper interruptbkp_flag_clear();//清除TAMPER-RTC引脚(PC13)侵入事件标志,clear the bit flag of tamper event bkp_interrupt_disable();//不使能TAMPER-RTC引脚(PC13)侵入中断,disable the tamper pinbkp_interrupt_enable();//TAMPER-RTC引脚(PC13)侵入中断使能,enable the tamper pinbkp_tamper_active_level_set(TAMPER_PIN_ACTIVE_LOW);//配置TAMPER引脚(PC13)输出低电平有效,tamper pin active level set} } #include UART3.h #include stdio.h //使能printf(),sprintf()void UART3_Init(unsigned int bound);//函数功能初始化串口3,这个和STM32F103VET6的UART4兼容 void UART3_Init(unsigned int bound) {rcu_periph_clock_enable(RCU_GPIOC); //使能GPIOC时钟,enable GPIO clock rcu_periph_clock_enable(RCU_UART3); //使能UART3时钟,enable USART clockgpio_init(GPIOC, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10);//将GPIOC10设置为AFIO口(复用IO口),输出上拉gpio_init(GPIOC, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_11);//将GPIOC11设置为浮空输入口usart_deinit(UART3); //复位UART3,USART configureusart_baudrate_set(UART3, bound); //设置UART3的波特率usart_word_length_set(UART3, USART_WL_8BIT); //设置UART3数据传输格式为8位usart_stop_bit_set(UART3, USART_STB_1BIT); //设置UART3停止位为1位usart_parity_config(UART3, USART_PM_NONE); //设置UART3无需奇偶校验usart_hardware_flow_rts_config(UART3, USART_RTS_DISABLE); //设置不使能UART3的RTS引脚功能usart_hardware_flow_cts_config(UART3, USART_CTS_DISABLE); //设置不使能UART3的CTS引脚功能usart_receive_config(UART3, USART_RECEIVE_ENABLE); //使能UART3接收usart_transmit_config(UART3, USART_TRANSMIT_ENABLE); //使能UART3发送usart_enable(UART3); //使能UART3 }/* retarget the C library printf function to the USART */ int fputc(int ch, FILE *f) {usart_data_transmit(UART3, (uint8_t) ch);while( RESET usart_flag_get(UART3, USART_FLAG_TBE) ){//等待串口0发送结束}return ch; } main.c程序如下 #include gd32f10x.h //使能uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t,bool #include UART3.h #include stdio.h //使能printf(),sprintf()#include LED.h #include TamperDetectionFunction.hconst char CPU_Reset_REG[]\r\nCPU reset!\r\n; int main(void) {//NVIC_PRIGROUP_PRE4_SUB0:抢占优先级为4bit(取值为0~15),子优先级为0bit(没有响应优先级)//NVIC_PRIGROUP_PRE3_SUB1:抢占优先级为3bit(取值为0~7),子优先级为1bit(取值为0~1)//NVIC_PRIGROUP_PRE2_SUB2:抢占优先级为2bit(取值为0~3),子优先级为2bit(取值为0~3)//NVIC_PRIGROUP_PRE1_SUB3:抢占优先级为1bit(取值为0~1),子优先级为3bit(取值为0~7)//NVIC_PRIGROUP_PRE0_SUB4:抢占优先级为0bit(没有抢占优先级),子优先级为3bit(取值为0~15)nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);//设置系统中断优先级抢占优先级为4bit,子优先级为0bitUART3_Init(115200);//初始化UART3printf(%s,CPU_Reset_REG);//调试串口输出\r\nCPU reset!\r\nINTX_ENABLE();//开启所有中断LED_Init();//初始化MCU_LedTamperDetectionFunction_Init(); //TAMPER引脚(PC13)输入低电平时,会产生一个侵入检测事件,它会将所有数据备份寄存器内容清除。 //当将PC13输入低电平时,串口输出Clear backup_register!!!while(1){} }
http://www.w-s-a.com/news/681493/

相关文章:

  • 电子产品网站开发背景网站关键词优化方案
  • 建网站论坛wordpress提交数据库错误
  • 国内网站建设公司开源网站系统
  • 网站开发公司上大连网站建设流程图
  • 银川网站seo宁波网
  • 个人备案网站会影响吗网站添加 备案
  • 网站建设与电子商务的教案关于旅游网站建设的方案
  • 电子商务网站建设设计原则找做网站找那个平台做
  • 天津高端品牌网站建设韶关网站建设墨子
  • Wordpress多站点为什么注册不了2008iis搭建网站
  • 天津高端网站制作建网站的公司服务
  • 温州网站推广优化类似淘宝的网站怎么做的
  • 网站建设实训考试什么网站做玩具的比较多
  • 上海网站建设特点怎样给公司做一个网站做推广
  • 流量网站怎么做的济南优化排名公司
  • 保定网站制作套餐设计师导航网站大全
  • 惠州 商城网站建设石家庄新闻广播在线收听
  • 洪山网站建设域名购买之后怎么做网站
  • 北京网站建设公司服务哪家好wap是什么意思?
  • 怎么看公司网站做的好不好哦wordpress页面目录下
  • 做装修业务呢有多少网站平台搭建是什么
  • 潍坊优化网站排名淘宝做网站被骗
  • 建设专业网站的利弊免费logo设计生成器下载
  • 怎么在备案号添加网站网页设计动画网站
  • 网站开发 只要wordpress滑动注册
  • 跨境电商运营主要做什么静态网站如何做优化
  • 南充网站建设网站网站备案安全责任书是谁盖章
  • 怎么将网站设置为首页网站子目录怎么做
  • 做网站交互wordpress信息导出
  • 如何自己做企业网站做外贸登录国外网站