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

南昌手机模板建站网站被攻击了怎么办

南昌手机模板建站,网站被攻击了怎么办,邮箱注册网站申请,网站建站多钱前言 7801资料读起来不是很好理解#xff0c;大概率是之前MTK的大佬写的。在此以简单的方式进行描述。我们做一个简单的规则组软件触发Demo。因为规则组通道只有一个数据寄存器#xff0c;因此还需要用上DMA方式搬运数据到内存。 AC7801的ADC简介 7801的ADC是一种 12 位 逐…前言 7801资料读起来不是很好理解大概率是之前MTK的大佬写的。在此以简单的方式进行描述。我们做一个简单的规则组软件触发Demo。因为规则组通道只有一个数据寄存器因此还需要用上DMA方式搬运数据到内存。 AC7801的ADC简介 7801的ADC是一种 12 位 逐次逼近型 模拟数字转换器拥有 12 路外部通道和 2 路内部通道支持单次、连续、扫描或间断转换多种模式。模拟监控器特性允许应用程序监测输入电压是否超出设定的电压范围。 特性  12 位分辨率  通道输入电压范围 AVSS Vin AVDD  最大转换速率 1Msps  14 路通道 12 路外部通道 1 路内部温度传感器 T-Sensor 1 路内部带隙基准Bandgap 每路通道可单独配置采样时间  转换序列分为 规则组 regular group 和注入组 injection group − 规则组最多可配置 12 个通道 − 注入组最多可配置 4 个通道  8 种操作模式 ( 方便起见称为 mode x x1~8) − 规则组单通道单次转换 (mode1) − 规则组单通道连续转换 (mode2) − 规则组扫描 注入组扫描模式多通道单次转换 (mode3 注入组扫描模式 ) − 规则组扫描 注入组间隔模式多通道单次转换 (mode3 注入组间隔模式 ) − 规则组扫描 自动触发注入组扫描模式多通道单次转换 (mode4) − 规则组扫描 注入组扫描模式多通道连续转换 (mode5 注入组扫描模式 ) − 规则组扫描注入组间隔模式多通道连续转换(mode5 注入组间隔模式 ) − 规则组扫描 自动触发注入组扫描模式多通道连续转换 (mode6) − 规则组子组扫描模式转换 (mode7) − 注入组子组扫描模式转换 (mode8)  通过内部软件触发或外部硬件触发启动 ADC  模拟监控器功能 − 配置为单个或所有通道电压检查 − 监控通道电压是否低于低阈值或高于高阈值  中断         − 规则或注入组转换结束 (EOC End Of Conversion)         − 注入组转换结束 (IEOC)         − 模拟监控器事件 (AMO)  DMA 访问仅用于规则组通道 典型操作流程 ADC 首先上电然后可以通过内部 SWSTART 或外部触发源触发 ADC 该触发来源于其它模块。触发后ADC 转换器单元开始工作并将选择信号发送至输入通道选择器根据规则或注入组通道序列逐个选择所需的通道。在一个通道完成转换后转换结果将根据当前转换通道所属的组存储到 RDR 或 IDRx 中并且产生相应的 EOC 或 IEOC 标志置位。模拟监控器工作时如果发生相应的事件则会出现相关的状态标志。 使用DMA 由于规则组通道只有一个数据寄存器因此建议使用 DMA 功能 以避免在有多个规则组通道进行转换时丢失转换结果。DMA 功能专用于规则组通道。只有规则组通道转换结束标志才会产生 DMA 请求。只有产生了 DMA 请求 DMA 才会将转换数据从ADC_RDR 搬运到用户指定的目标位置。 ADC流程 经典的初始化DMA初始化。 ADC的初始化185/186两行注释看的一脸懵逼 ADC的回调 DMA的回调 业务代码 旋转电位器查看打印值 由单个ADC改成多个ADC AC7801的ADC写的注释相对比较完整但是没说明软件触发从1个怎么改到多个。 使用时候需要注意下图中红框部分有些DISABLE和ABLE的参数错了大概率就不可能正常采样。黄框部分就是从1个ADC改成3个需要修改的地方。 读取时候只需要触发一次ADC0即可 具体代码如下 #include adc_sample.h#define Delay5us (APB_BUS_FREQ/200000-1) #define Delay5ms (APB_BUS_FREQ/200-1) #define Delay1s (APB_BUS_FREQ-1)uint8_t g_dmaFinish 0; // DMA传输完成 uint8_t g_halfDmaFinish 0; // DMA传输半完成 uint8_t g_dmaTransError 0; // DMA传输错误 uint32_t g_ADCValueBuffer[DMA_TRANSFER_NUM 1] {0}; uint32_t g_timerCnt 0; uint16_t g_regularAverageSampleValue 0; // 规则组采样平均值 uint16_t g_injectAverageSampleValue 0; // 注入组采样平均值 uint16_t g_adcInjectValue[4]; uint8_t g_AMOFlag 0; // 模拟看门狗事件标志 /* 注意EOC标志写0或读取ADC_RDR都会清除该标志位。 在进行debug时如果有打开memory窗口或打开ADC寄存器。 该标志会被debug清除。 */ uint8_t g_EOCFlag 0; // 规则组转换结束标志。 uint8_t g_IEOCFlag 0; // 注入组转换结束标志。void ADC_Callback(void *device, uint32_t wpara, uint32_t lpara) {if (wpara ADC_STR_EOC_Msk) // 规则组中断标志{g_EOCFlag 1;}if (wpara ADC_STR_AMO_Msk) // 模拟监控中断标志{g_AMOFlag 1;} }void ADC_DMACallback(void *device, uint32_t wpara, uint32_t lpara) {/*wparam为DMA通道状态状态含义可参考CHANNELx_STATUS寄存器CHANNELx_STATUS[2] 传输错误CHANNELx_STATUS[1] 半传输完成相对设置的transferNum如果半传输中断有使能transferNum设为6则DATA_TRANS_NUM为3时产生中断进入回调CHANNELx_STATUS[0] 传输完成*/if ((wpara 0x01) 0x1){g_dmaFinish 1;}if ((wpara 0x02) 0x2){g_halfDmaFinish 1;}if ((wpara 0x04) 0x4){g_dmaTransError 1;} }void ADC_DMAInit(void) {uint32_t tmpMemStartAddr (uint32_t)g_ADCValueBuffer[0];uint32_t tmpMemEndAddr (uint32_t)g_ADCValueBuffer[DMA_TRANSFER_NUM 1]; /// Setting memory DMA addressDMA_ConfigType tmpDMAConfig;memset(tmpDMAConfig, 0x00, sizeof(DMA_ConfigType));tmpDMAConfig.memStartAddr tmpMemStartAddr; // 设置DMA开始地址tmpDMAConfig.memEndAddr tmpMemEndAddr; // 设置DMA结束地址tmpDMAConfig.periphStartAddr (uint32_t)((ADC0-RDR)); /// Move ADC DR to memorytmpDMAConfig.channelEn ENABLE; /// 使能DMAx通道tmpDMAConfig.finishInterruptEn ENABLE; /// 使能DMA传输完成中断tmpDMAConfig.halfFinishInterruptEn DISABLE; /// 去能DMA半传输完成中断tmpDMAConfig.errorInterruptEn ENABLE; /// 使能DMA传输错误中断tmpDMAConfig.channelPriority DMA_PRIORITY_VERY_HIGH; /// 设置DMA通道优先级0~3 优先级由低到高tmpDMAConfig.circular ENABLE; /// 使能循环模式如果只想工作一次设为0即可。tmpDMAConfig.direction DMA_READ_FROM_PERIPH; /// 0: 从外设读取1从存储器读取tmpDMAConfig.MEM2MEM DISABLE; /// 0在非存储器与存储器之间传输1在存储器与存储器之间传输tmpDMAConfig.memByteMode DMA_MEM_BYTE_MODE_1TIME; /// MEM字分割传输数0:32-bit,1:16-bit[15:0]; 2:16-bit[23:16][7:0];3:8-bit。详情可参考AC781X芯片手册 表20-2 可编程数据宽度数据对齐tmpDMAConfig.memIncrement ENABLE; /// 1:MEM地址增加tmpDMAConfig.periphIncrement DISABLE; /// 0外设地址固定tmpDMAConfig.memSize DMA_MEM_SIZE_32BIT; /// 0:8-bit,1:16-bit,2:32-bittmpDMAConfig.periphSize DMA_PERIPH_SIZE_16BIT; /// 0:8-bit,1:16-bit,2:32-bittmpDMAConfig.transferNum DMA_TRANSFER_NUM; /// DMA通道传输长度tmpDMAConfig.periphSelect DMA_PEPIRH_ADC0; // 外设选择tmpDMAConfig.callBack ADC_DMACallback; /// 设置DMA中断回调DMA_Init(DMA0_CHANNEL0, tmpDMAConfig); /// ADC 使用DMA1通道每个模块对应的DMA通道可参考 AC781X芯片手册 表20-1 DMA请求列表NVIC_EnableIRQ(DMA0_CHANNEL0_IRQn); /// 使能DMA1中断请求 }void ADC_init() {ADC_ConfigType tempAdcConfig;ADC_ConfigType *adcConfig;adcConfig tempAdcConfig;// 配置PINMUXGPIO_SetFunc(GPIOA, GPIO_PIN4, GPIO_FUN2); /// ADC_IN6 Analog function enableGPIO_SetFunc(GPIOA, GPIO_PIN3, GPIO_FUN2); /// ADC_IN7 Analog function enableGPIO_SetFunc(GPIOA, GPIO_PIN2, GPIO_FUN2); /// ADC_IN8 Analog function enableadcConfig-clkPsc ADC_CLK_PRESCALER_1; /// Set ADC Clk 24M/2/(01)adcConfig-scanModeEn ENABLE; // 扫描模式adcConfig-continousModeEn DISABLE; // 连续模式adcConfig-regularDiscontinousModeEn DISABLE; // 1打开规则组间断转换模式adcConfig-injectDiscontinousModeEn DISABLE; // 1打开注入组间断转换模式adcConfig-injectAutoModeEn DISABLE; // 1自动注入模式adcConfig-intervalModeEn DISABLE; // 1注入组为间隔转换模式adcConfig-regularDiscontinousNum 0; //adcConfig-EOCInterruptEn ENABLE; // EOC中断使能adcConfig-IEOCInterruptEn ENABLE; // IEOC中断使能adcConfig-interruptEn ENABLE; // 中断使能adcConfig-regularDMAEn ENABLE; // 使能ADC DMAadcConfig-regularTriggerMode ADC_TRIGGER_INTERNAL; // ADC触发源内部触发adcConfig-regularSequenceLength 3; // 规则组长度设为3adcConfig-dataAlign ADC_DATA_ALIGN_RIGHT; // 右对齐adcConfig-callBack ADC_Callback; // 回调adcConfig-powerMode ADC_POWER_ON; // 上电ADC_Init(ADC0, adcConfig); /// ADC works Mode Config// ADC转换率计算公式 转换时间 采样时间转换时间同步时间 转换时间 (SPT12)/ADC模块时钟频率5/APB时钟频率// 备注1.同步时间为5个APB CLK。2.ADC时钟频率 APB时钟频率 /(分频系数1)// 规则组通道设置ADC_SetRegularGroupChannel(ADC0, ADC_CH_7, ADC_SPT_CLK_7, 0); // 采样转换时间 (712)/24000000 5/24000000 1usADC_SetRegularGroupChannel(ADC0, ADC_CH_8, ADC_SPT_CLK_7, 1); // 采样转换时间 (712)/24000000 5/24000000 1usADC_SetRegularGroupChannel(ADC0, ADC_CH_6, ADC_SPT_CLK_7, 2); // 采样转换时间 (712)/24000000 5/24000000 1us }void ADC_SampleSoftwareTrigerADC(void) {ADC_init();ADC_DMAInit(); // ADC DMA初始化while (1){// 每次转换数据清零memset(g_ADCValueBuffer, 0x00, sizeof(g_ADCValueBuffer));ADC_SoftwareStartRegularConvert(ADC0); /// 软件触发规则组采样udelay(8); // 需要采样8个通道延时8us以保证数据采样完成printf(%d %d %d\r\n, g_ADCValueBuffer[0],g_ADCValueBuffer[1],g_ADCValueBuffer[2]);mdelay(100);} }转换率公式
http://www.zqtcl.cn/news/902321/

相关文章:

  • 做商城网站需要备案什么域名硬件开发工具有哪些
  • 网络网站制作技巧wordpress全文
  • 韩国原生ip站群服务器左右悬停代码网站
  • 专门做广东11选5的网站网站 备案 营业执照
  • 免费扑克网站wordpress弹出服务协议窗口
  • 网站的反爬一般怎样做网站右键屏蔽
  • 茂名做网站dyiee青岛宣传片制作公司
  • 凡科网可以自己做网站吗编程常用网站
  • 做网站练手项目公司营业执照可以做几个网站
  • 聚通达网站建设网站并发要求
  • 网站建设预算申请如何写服装店网页设计素材
  • 做网站设计的公司柳州芜湖又出现一例
  • 重庆网站网站建设东莞市网站建设公司哪家好
  • php做网站如何架构wordpress 排版
  • wordpress免费网站模板下载地址在北京注册公司需要多少钱
  • 做的网站打不开高端网站名字
  • 个人网站建设报告西安网站开发高端网站开发
  • “网站建设:上海珍岛”网站备案信息查询系统
  • 北京哪个公司做网站专业建站培训
  • 郑州知名网站推广网站管理设置
  • 建设工程网站资质人员查询常州模板网站建设价格
  • 自己建网站做app手机网站列表页源码
  • 企业网站模板seo网站建设关键词优化
  • 平面毕业设计作品网站推广普通话ppt
  • p2p网站开发思路方案免费建简单网站
  • 微信朋友圈的网站连接怎么做互联网工程有限公司
  • 高大上企业网站优秀的门户网站
  • 做seo对网站推广有什么作用自己做电商网站吗
  • 网站从哪些方面来做泉州网页搜索排名提升
  • 网站建设可以给公司带来想做网站开发兼职